【问题标题】:ERROR 1071 (42000): Specified key was too long; max key length is 3072 bytesERROR 1071 (42000):指定的密钥太长;最大密钥长度为 3072 字节
【发布时间】:2020-09-25 09:19:41
【问题描述】:

我在装有 Tomcat 7.0.76.0 和 MariaDB 10.2.23 的 Linux 机器上安装 Govway 3.3.2;当我开始导入 sql“GovWay.sql”时,出现错误“ERROR 1071 (42000): Specified key is too long; max key length is 3072 bytes”。 我尝试更改字符,还尝试设置以下变量:

  • SET GLOBAL innodb_large_prefix=ON;
  • SET GLOBAL innodb_file_format=barracuda;
  • SET GLOBAL innodb_file_per_table=true;

但我还没有解决问题。

这个问题中提出的解决方案,我无法应用它们 question

据说可以改变的其他解决方案

varchar (4000)

但我无法进行此更改。

有什么建议吗?

【问题讨论】:

  • 这是硬编码限制,不能更改,见InnoDB Limitations - Large Prefix Size
  • 所以不可能做到这一点?他们在编写安装手册时做错了吗? @Akina
  • 您真的需要索引该列的全部 4000 个符号吗?也许索引前 3072 个字符 CREATE TABLE .. ( .., column VARCHAR(4000) .. INDEX .. (column(3072)), .. ) 就足够了?
  • 我不知道,因为它是第三方应用程序。我可以试试@Akina
  • 调查有问题的索引的目的。也许根本不需要它?或者,例如,即使前 10 个字符也足以改进使用该索引的查询?我认为 DDL 中根本没有指定前缀长度。

标签: mysql mariadb


【解决方案1】:

建议的解决方案是评论“约束”

-- CONSTRAINT uniq_pa_behaviour_props_1 UNIQUE (id_porta,nome,valore),

【讨论】:

    猜你喜欢
    • 2019-03-21
    • 2015-06-22
    • 2012-02-03
    • 2017-02-25
    • 2020-07-26
    • 2013-12-21
    • 2015-06-29
    相关资源
    最近更新 更多