MySQL 错误 #1071:深入研究密钥长度约束
尝试通过在两个 VARCHAR 上添加唯一键约束来修改 MySQL 表时列时,会出现一条相当令人困惑的错误消息:“#1071 - 指定的密钥太长;最大密钥长度为767 字节”。尽管两列的大小似乎都在 767 字节限制之内,但了解此错误需要更深入地了解 MySQL 的密钥长度限制。
重新访问密钥长度限制
MySQL 5.6 及更早版本中键的最大长度对于 InnoDB 表来说确实是 767 字节,对于 InnoDB 表来说是 1,000 字节MyISAM 表。然而,在 MySQL 5.7 及更高版本中,此限制已扩展到更大的 3072 字节。
解码 VARCHAR 存储
虽然 VARCHAR 数据类型建议最大长度为各自的列存储 20 和 500 字节,此计算不考虑字符编码。如果您的 VARCHAR 字段以 utf8mb4 格式编码,则最大索引前缀长度实际上会减少四分之一,结果只有 191 个字节 (767 / 4)。
查找解决方法
要解决此问题,请考虑实施以下其中一项策略:
以上是为什么 MySQL 会抛出错误#1071:'指定的键太长”?的详细内容。更多信息请关注PHP中文网其他相关文章!