无法将数据库复制到远程主机。指定密钥太长;最大密钥长度为767字节

时间:2017-03-06 15:05:20

标签: mysql database

我有本地MySql数据库,当我尝试将其复制到远程主机上的新空数据库时出现错误:

Specified key was too long; max key length is 767 bytes

如何在不更改编码的情况下复制整个数据库?为什么它在本地而不是远程工作?

右侧是localhost right side is localhost

2 个答案:

答案 0 :(得分:0)

您可能在索引中有一些列,在您的表格目的地中有一个长字符串定义..eg varchar(255) ..您可以在新表创建时不需要减少此维度,例如

来自

col1 varchar(255),
col2 varchar(255),  

col1 varchar(16),
col2 varchar(32),  

(请记住,某些字符编码需要更多信息才能获得单个值的字符)

答案 1 :(得分:0)

此错误的常见原因可能是本地数据库使用utf8字符集(每个字符最多3个字节),而远程数据库使用utf8mb4字符集,每个字符最多可使用4个字节。

由于索引长度(例如varchar列上的唯一索引或主键)是使用字符lenths定义的,但是使用它们的字节表示在内部存储,因此唯一varchar或text列的最大长度较低。

要解决此问题,您还可以将远程数据库的默认字符集设置为utf8而不是utf8mb4。