MySQL 从 Amazon MySQL RDS 本地导入转储时出现语法错误?

MySQL Syntax error when locally importing dump from Amazon MySQL RDS?

当我从 Amazon RDS 创建数据库转储然后尝试将其导入本地时,结果是 ERROR 1064 (42000) at line 54

第54行有如下语句: CREATE TABLE account_emailconfirmation (

转储使用的命令是: mysqldump -u user -h host.rds.amazonaws.com -p --default-character-set=utf8 --result-file=sync.sql database_name

用于导入的命令是: mysql --user=root -p mpl -vv < sync.sql

这是输出(详细程度增加)。

--------------
CREATE TABLE `account_emailconfirmation` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `created` datetime(6) NOT NULL,
  `sent` datetime(6) DEFAULT NULL,
  `key` varchar(64) NOT NULL,
  `email_address_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `key` (`key`),
  KEY `acc_email_address_id_5bcf9f503c32d4d8_fk_account_emailaddress_id` (`email_address_id`),
  CONSTRAINT `acc_email_address_id_5bcf9f503c32d4d8_fk_account_emailaddress_id` FOREIGN KEY (`email_address_id`) REFERENCES `account_emailaddress` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
--------------

ERROR 1064 (42000) at line 54: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(6) NOT NULL,
  `sent` datetime(6) DEFAULT NULL,
  `key` varchar(64) NOT NULL,
 ' at line 3
Bye

'key' 是 MySQL 中的保留字,不应用作列名。 Amazon RDS 上的不同版本可能允许它,但最好的办法是将列名称更改为不同的名称。

问题出在 datetime(6) 上。 MySql 在 v5.6.4 中引入了小数秒的存储。在日期时间中指示小数秒的语法 - 这是 (6) - 以前的 mysql 版本无法识别。

数据是从 mysql v5.6.4 或更高版本导出的,并试图导入到更早的版本中。由于错误消息以(6)开头,我认为这是问题所在。