Amazon RDS到自定义MySQL服务器InnoDB密钥大小

时间:2014-01-10 21:58:20

标签: mysql innodb mysqldump rds

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

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选项添加到dumpfile:Force row_format on mysqldump

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

1 个答案:

答案 0 :(得分:1)

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

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