我正在尝试编写一个脚本,将某个表的引擎更改为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
进行检查。
答案 0 :(得分:1)
如果不删除外键约束,则无法将表的引擎更改为不支持外键的引擎。
Documentation for the MEMORY engine
如果新引擎不支持它们,则它们根本不存在,因此您需要在进行适当更改之前将其删除。