当我从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
答案 0 :(得分:9)
问题在于datetime(6)。 MySql引入了v5.6.4中的小数秒的存储。在datetime中指示小数秒的语法 - 这是(6) - 以前的mysql版本无法识别。
数据是从mysql v5.6.4或更高版本导出的,并尝试导入到早期版本中。由于错误消息以(6)开头,我认为这是问题所在。
答案 1 :(得分:-1)
'key'是MySQL中的保留字,不应用作列名。 Amazon RDS上的其他版本可能允许它,但您最好的选择是将列名更改为不同的名称。