我试图在从latin1将字符集更改为utf8之后导入我的备份,现在在导入期间我收到此错误 ERROR 1071(42000)第2137行:指定密钥太长;最大密钥长度为1000字节 尝试改变my.cnf并设置所有charset和连接到utf8,但现在好运,我不想回到latin1,我知道这将解决问题,但utf8我的监狱有任何线索?我知道拉丁1字节= 1字符和utf8 3字节= 1 ..
答案 0 :(得分:3)
虽然每个字符的UTF-8并不总是3个字节,但MySQL为每个字符保留了3个字节的索引。
如果您的应用程序允许它(即它未在UNIQUE KEY约束中使用),请重新定义/更改表以使用适当长度的前缀键(即< 1000/3)。
CREATE TABLE my_table .... KEY my_field_20(my_field(20));
答案 1 :(得分:0)
你可以从MyISAM切换到InnoDB,它似乎解决了问题..
答案 2 :(得分:-1)
在mysqldump命令中使用--force选项,它将忽略错误并继续备份。