Ben*_*rel 4 mysql foreign-key mysql-5.7 amazon-rds
我正在设置将外部 MySQL 实例复制到 RDS。
外部 MySQL 实例和 RDS 都运行 MySQL 5.7.10。
我已按照该程序进行操作,但是在转储数据库mysqldump并将其发送到mysql连接到 RDS 时,出现以下错误:
第 2081 行的 ERROR 1215 (HY000):无法添加外键约束
SHOW ENGINE InnoDB STATUS 在 RDS 节目中:
------------------------
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
Run Code Online (Sandbox Code Playgroud)
好的,转储文件确实按字母顺序重新创建了表,因此该Prospect表出现在Restaurant和之前Zone,这可以解释错误。
但是不,因为mysqldump添加SET FOREIGN_KEY_CHECKS=0到文件的顶部,所以无论如何它都应该工作。
所以我决定在一个普通的 MySQL 5.7 安装上测试它,毫不奇怪,转储成功地导入了完全相同的命令。
是什么导致了这个错误,特别是在 RDS 上,以及如何避免它?
刚刚发现这是一个已在下一个版本 MySQL 5.7.11 中修复的错误。
从变更日志中摘录:
InnoDB:禁用foreign_key_checks 时,创建具有全文索引和外键约束的表失败。(错误#22094601,错误#78955)
我花了一些时间才弄清楚全文索引是问题的根源,我不得不逐行修剪我的转储文件,直到可以成功导入转储。
不幸的是,RDS 还不支持 MySQL 5.7.11,所以我不得不解决这个问题。这是我所做的:
mysqldump像往常一样创建转储文件FULLTEXT KEY行ALTER TABLE语句将我在记事本中的每个全文索引添加回其表这工作得很好,我的表现在完全同步了。
| 归档时间: |
|
| 查看次数: |
1746 次 |
| 最近记录: |