【发布时间】:2011-02-28 05:02:58
【问题描述】:
我最近将我的数据库迁移到了不同的服务器。
在旧服务器上,我大量使用了 InnoDB 的 ON DELETE CASCADE 规则。
在新服务器上,MySql 没有设置 InnoDB 引擎。
在迁移时,新服务器默认使用 MyISAM - 直到现在我才注意到这一点。 (头撞墙!)
所以,情况是这样的:因为数据库一直在使用,我的一些使用 ON DELETE CASCADE 规则的表现在不同步了。 (还在用头撞墙。)
这意味着我不能只是将表更改为 InnoDB 并重新应用级联规则 - 一些键现在引用不再存在的行。
我的问题是这样的:
有没有办法配置 INSERT 语句,以便如果插入的任何行违反级联规则,它会默默地忽略该行并移至下一行? (起初我以为 INSERT IGNORE 会做到这一点,但我试过了,它似乎不起作用。)
提前感谢您的帮助
【问题讨论】:
-
使用“SET foreign_key_checks = 0”并尝试将表移动到innoDB。我没有尝试过,但看看它是否有效。在做任何事情之前先备份..
标签: mysql innodb cascading-deletes