gpt4 book ai didi

mysql - 玩! & MariaDB - 使用 InnoDB 时索引到大 767 字节

转载 作者:行者123 更新时间:2023-11-30 21:54:52 24 4
gpt4 key购买 nike

请注意:在这里玩新手

系统信息:

操作系统:Arch Linux x64

  • 4.12.3-1-ARCH

数据库:MariaDB

  • mysql Ver 15.1 Distrib 10.1.25-MariaDB,适用于使用 readline 5.1 的 Linux (x86_64)

问题:

我正在尝试使用关联模型类中的表创建一个数据库,其中索引/id 键太长。

错误:

未正确应用进化。请检查问题并手动解决,然后再将其标记为已解决。

We got the following error: Index column size too large. The maximum column size is 767 bytes. [ERROR:1709, SQLSTATE:HY000], while trying to run this SQL script:

# --- Rev:1,Ups - 7feba1a
create table address (
address_id bigint auto_increment not null,
unit_number varchar(255),
street_name varchar(255),
community_name varchar(255),
is_community tinyint(1) default 0,
constraint pk_address primary key (address_id)
);


create table user (
user_id bigint auto_increment not null,
name varchar(255),
surname varchar(255),
password varchar(255),
email varchar(255),
cell_number varchar(255),
email_verified tinyint(1) default 0,
crsftoken varchar(255),
token varchar(255),
constraint pk_user primary key (user_id)
);

下面列出了一些模型:

地址模型

@Entity 
public class Address extends Model {

@Id
@Constraints.Required
@GeneratedValue
private Long addressId;
@Constraints.Required
private String unitNumber;
@Constraints.Required
private String streetName;
private String communityName;
private Boolean isCommunity;

public static Finder<String, Address> find = new Finder<String, Address>(Address.class);

用户模型:

@Entity
public class User extends Model {

@Id
@Constraints.MinLength(10)
@Constraints.MaxLength(10)
@GeneratedValue
private Long userId;

private String name;
private String surname;

@Constraints.Required
private String password;

@Constraints.Email
@Constraints.Required
private String email;

@Constraints.Required
@Constraints.Pattern("[0]\\d{2}[- ]{0,1}\\d{3}[- ]{0,1}\\d{4}")
private String cellNumber;
private Boolean emailVerified = false;

private String CRSFToken;

public static Finder<String, User> find = new Finder<String, User>(User.class);

我的发现:

研究这个错误,似乎暗示我应该:1. 使用innoDB引擎(在 MariaDB 中默认使用)2.设置innodb_large_prefix3. 使用barracuda文件格式4.设置表(使用innoDB引擎)row formatting使用 ROW_FORMATDYNAMICCOMPRESSED

这些解决方案是在 SO 上提出的:

  • > here
  • > here
  • > here (包括设置整理,但我找不到如何在 Play 中执行此操作!)

和一个独立的博客:

  • > here (最有帮助的)

更多信息:

我尝试设置这些:

MariaDB [(none)]> CREATE DATABASE eatalotdb;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> set GLOBAL storage_engine='InnoDb';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> set GLOBAL innodb_large_prefix = ON;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> set global innodb_file_format = BARRACUDA;
Query OK, 0 rows affected (0.00 sec)

我无法设置行格式,因为此时不存在任何表,但是当通过 Evolutions SQL 脚本创建表时,出现以下错误。

问题:

我已到达 Google 搜索结果的第 3 页,但仍未找到解决方案。我该如何解决这个错误?

附注作为附带问题,我正在努力寻找有关 Play 的信息和文档! Framework,除了Play!提供的标准文档,我还能从哪里学到更多的例子,理解等等?

最佳答案

见尾
http://mysql.rjweb.org/doc.php/index_cookbook_mysql#speeding_up_wp_postmeta

重新配置(如果继续使用 5.6.3 - 5.7.6 或等效的 MariaDB)——需要更改的 4 件事:Barracuda + innodb_file_per_table + innodb_large_prefix + dynamic 或 compressed。

请提供 SHOW CREATE TABLESHOW TABLE STATUS 以帮助验证其中的一些内容。

关于mysql - 玩! & MariaDB - 使用 InnoDB 时索引到大 767 字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45629589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com