DBAtlas · 数据库运维图谱

1071: Specified key was too long; max key length is 767 bytes(指定的键过长;最大键长度为 767 字节)

MySQL

含义

要创建的索引(或键)超出了允许的最大字节长度。尤其在多字节字符集下,VARCHAR 索引很快就会达到此限制。

原因

在 utf8mb4(每字符 4 字节)的宽 VARCHAR 列上建索引;旧的 InnoDB 行格式(REDUNDANT/COMPACT;在 5.7 及更早版本中还包括禁用的 innodb_large_prefix);多列复合索引的总长度超过限制;主键过大。

解决方法

缩短被索引列的长度或使用前缀索引:CREATE INDEX idx ON my_table (my_column(191)); 使用 DYNAMIC/COMPRESSED 行格式以获得 3072 字节的限制(DYNAMIC 是 MySQL 8.0 的默认值;innodb_large_prefix 已在 8.0 中移除,仅在 5.7 及更早版本中需要)。必要时检查列的字符集/长度。

在 DBAtlas 中打开 →

同一数据库的其他条目