1

在我将字符集从 latin1 更改为 utf8 之后,我试图导入我的备份,现在在我的导入过程中,我在第 2137 行收到了这个错误 ERROR 1071 (42000): Specified key is too long; 最大密钥长度为 1000 字节尝试更改 my.cnf 并将所有字符集和连接设置为 utf8,但现在幸运,我不想回到 latin1,我知道这会解决问题,但 utf8 我的监狱有什么线索吗?我知道拉丁语 1 字节 = 1 char 和 utf8 3 字节 = 1 ..

4

3 回答 3

3

虽然 UTF-8 并不总是每个字符 3 个字节,但 MySQL 为索引保留每个字符 3 个字节。

如果您的应用程序允许(即它未在 UNIQUE KEY 约束中使用),请重新定义/更改表以使用适当长度的前缀键(即 < 1000/3)。

创建表 my_table .... KEY my_field_20 (my_field(20));

于 2010-11-09T22:51:13.950 回答
0

你能从 MyISAM 切换到 InnoDB,它似乎解决了这个问题..

于 2010-11-09T07:14:39.367 回答
-1

在 mysqldump 命令中使用 --force 选项,它将忽略错误并继续备份。

于 2010-11-09T07:07:26.993 回答