外部MySQL实例和RDS都运行MySQL 5.7.10.
我已经按照这个过程,但是当使用mysqldump转储数据库并将其发送到连接到RDS的mysql时,我收到以下错误:
ERROR 1215 (HY000) at line 2081: Cannot add foreign key constraint
RDS上的SHOW ENGINE InnoDB状态显示:
------------------------
LATEST FOREIGN KEY ERROR
------------------------
2016-03-25 01:38:56 0x2ad07ddcf700 Error in foreign key constraint of table db/Prospect:
FOREIGN KEY (`restaurantId`) REFERENCES `Restaurant` (`id`),
CONSTRAINT `FK_Prospect_Zone` FOREIGN KEY (`zoneId`) REFERENCES `Zone` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=18292 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci:
Cannot resolve table name close to:
(`id`),
CONSTRAINT `FK_Prospect_Zone` FOREIGN KEY (`zoneId`) REFERENCES `Zone` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=18292 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
好的,转储文件确实按字母顺序重新创建表,因此Prospect表出现在Restaurant和Zone之前,可以解释错误.
但是没有,因为mysqldump将SET FOREIGN_KEY_CHECKS = 0添加到文件的顶部,所以无论如何它都应该工作.
所以我决定在一个普通的MySQL 5.7安装上测试它,毫不奇怪,使用完全相同的命令成功导入转储.
什么原因导致RDS上的这个错误,以及如何避免它?