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

时间:2015-11-04 16:55:23

标签: mysql amazon-web-services mysqldump 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

2 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:-1)

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