gpt4 book ai didi

MySQL 错误 #1071 - 指定的键太长;最大 key 长度为 767 字节

转载 作者:行者123 更新时间:2023-11-29 15:36:22 25 4
gpt4 key购买 nike

当我执行以下命令时:

ALTER TABLE `mytable` ADD UNIQUE (
`column1` ,
`column2`
);

我收到此错误消息:

#1071 - Specified key was too long; max key length is 767 bytes

有关第 1 列和第 2 列的信息:

column1 varchar(20) utf8_general_ci
column2 varchar(500) utf8_general_ci

我认为 varchar(20) 仅需要 21 个字节,而 varchar(500) 仅需要 501 个字节。所以总字节数是 522,小于 767。那为什么我会收到错误消息?

#1071 - Specified key was too long; max key length is 767 bytes

最佳答案

MySQL 5.6 版(及之前版本)中的 767 字节是 stated prefix limitation对于 InnoDB 表。 MyISAM 表的长度为 1,000 字节。在 MySQL 版本 5.7(及更高版本)中,此限制已增加到3072 字节。

您还必须注意,如果您在采用 utf8mb4 编码的大 char 或 varchar 字段上设置索引,则必须除以最大索引前缀长度767 字节(或 3072 字节)乘以 4 得到191。这是因为 utf8mb4 字符的最大长度是四个字节。对于 utf8 字符,它将是三个字节,导致最大索引前缀长度为 255(或减去空终止符,254 个字符)。

您可以选择的一个选择是仅对 VARCHAR 字段设置下限。

另一个选项(根据 response to this issue )是获取列的子集而不是整个数量,即:

ALTER TABLE `mytable` ADD UNIQUE ( column1(15), column2(200) );

进行调整,因为您需要获取要应用的 key ,但我想知道是否值得检查有关该实体的数据模型,看看是否可以进行改进,这将允许您实现预期的业务规则而无需点击MySQL 的限制。

关于MySQL 错误 #1071 - 指定的键太长;最大 key 长度为 767 字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58209612/

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