MySQL 键长度限制及其修复
尝试在两个 VARCHAR 列上创建唯一索引时,用户可能会遇到错误“# 1071 - 指定的密钥太长;最大密钥长度为 767 字节”。此错误源于 MySQL 对密钥长度的限制。
了解密钥长度限制
在 MySQL 5.6 及之前版本中,最大密钥长度为 767 InnoDB 表的字节数。此限制适用于唯一键内所有索引字段的组合。对于 MyISAM 表,此限制为 1,000 字节。
UTF-8 字符编码因子
使用 UTF-8 字符编码 (utf8mb4) 时,需要注意的是它最多使用四个字节来表示单个字符。因此,对于 utf8mb4 编码字段,767 字节的最大索引前缀长度有效减少为 191 个字符。
可能的解决方案
ALTER TABLE `mytable` ADD UNIQUE ( column1(15), column2(200) );
在 MySQL 5.7 版及更高版本中,最大密钥长度已增加到 3072 字节,在处理大密钥时提供更大的灵活性。然而,考虑字符编码因素和数据模型优化以避免密钥长度错误仍然很重要。
以上是为什么我的 MySQL 唯一索引太长,如何修复?的详细内容。更多信息请关注PHP中文网其他相关文章!