我有本地MySql数据库,当我尝试将其复制到远程主机上的新空数据库时出现错误:
Specified key was too long; max key length is 767 bytes
如何在不更改编码的情况下复制整个数据库?为什么它在本地而不是远程工作?
答案 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。