更改具有外键的表的引擎

时间:2014-05-09 04:23:55

标签: mysql foreign-keys alter-table

我正在尝试编写一个脚本,将某个表的引擎更改为MEMORY。 该脚本如下所示:

Echo SET FOREIGN_KEY_CHECKS=0; > %TmpFile%
Echo ALTER TABLE `%Database%`.`compare_review` ENGINE = MEMORY; >> %TmpFile%
Echo SET FOREIGN_KEY_CHECKS=1; >> %TmpFile%

mysql -h %host% -u %User% -p%Pwd% < %TmpFile%

当我运行此脚本时,我收到错误:无法删除或更新父行:外键约束失败

我想知道导致此错误的原因是因为sql文件包含命令:SET FOREIGN_KEY_CHECKS=0;

我确定FOREIGN_KEY_CHECKS = 0,因为我也尝试使用命令Select @@FOREIGN_KEY_CHECKS进行检查。

1 个答案:

答案 0 :(得分:1)

如果不删除外键约束,则无法将表的引擎更改为不支持外键的引擎。

Documentation for the MEMORY engine

如果新引擎不支持它们,则它们根本不存在,因此您需要在进行适当更改之前将其删除。