玩! &MariaDB - 使用InnoDB时索引到大767字节
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了玩! &MariaDB - 使用InnoDB时索引到大767字节相关的知识,希望对你有一定的参考价值。
请注意:在这里玩新手
系统信息:
AS:Arch Lingh
- 4.12.3-1-ARCH
数据库:MariaDB
- mysql Ver 15.1使用readline 5.1为Linux(x86_64)分发10.1.25-MariaDB
问题:
我正在尝试使用关联模型类中的表创建数据库,其中index / id键为long。
错误:
进化尚未得到适当的应用。请检查问题并手动解决,然后再将其标记为已解决。
我们收到以下错误:索引列大小太大。最大列大小为767字节。 [ERROR:1709,SQLSTATE:HY000],在尝试运行此SQL脚本时:
# --- 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_prefix 3.使用barracuda文件格式4.设置表(使用innoDB引擎)row formatting与ROW_FORMAT
来DYNAMIC
或COMPRESSED
这些解决方案在SO上提出:
和一个独立的博客:
- 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脚本创建时,会显示以下错误。
题:
我已经在谷歌搜索结果的第3页结束了,但还没有找到解决方案。我该如何解决这个错误?
附:作为一个附带问题,我正在努力寻找关于Play的信息和文档!框架,除了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 +动态或压缩。
请提供SHOW CREATE TABLE
和SHOW TABLE STATUS
以帮助验证其中的一些。
由于我使用的是Archlinux,唯一可用的MySQL软件包来自MariaDB
或percona-server
。
这些都不能满足标准Ubuntu类型MySQL安装的要求。
解:
使用使用原始MySQL安装的远程服务器或切换到支持原始MySQL安装的操作系统
以上是关于玩! &MariaDB - 使用InnoDB时索引到大767字节的主要内容,如果未能解决你的问题,请参考以下文章
MariaDB · 性能优化 · Extended Keys
当 my.cnf 中的 innodb 未注释时,MariaDB 列存储未启动