4

我想将 Amazon MySQL RDS 实例导出到我自己的运行 MySQL 的服务器。我成功转储了数据库并在新数据库上重新创建了用户,但是当我去导入转储文件时,我得到:

ERROR 1071 (42000) at line 25: Specified key was too long; max key length is 767 bytes

一些谷歌搜索显示 InnoDB 的最大密钥大小为 767。事实证明,我们在 RDS 中使用了以下选项:

innodb_large_prefix=on
innodb_file_format=barracuda
innodb_file_per_table=true
log_bin_trust_function_creators=1

我将这些选项添加到 my.cnf,但我收到了相同的错误消息。然后我读到 innodb_large_prefix 仅适用于 ROW_TYPE=DYNAMIC 的表。事实证明,我们在 RDS 上使用了动态行,但这些行并未在转储文件中创建为 DYNAMIC。然后我发现这个 StackOverflow 帖子添加了 ROW_TYPE=DYNAMIC 选项到转储文件:Force row_format on mysqldump

然而,我仍然收到相同的错误消息。想法?

4

1 回答 1

1

我相信这是编码问题。如果在 RDS 上使用了 latin1,但在您的环境中使用了 UTF-8,那么索引 VARCHAR(256) 就是问题所在。

因为在 UTF-8 VARCHAR(256) 内部变成 VARCHAR(768)。

于 2014-02-11T19:37:22.060 回答