【问题标题】:Change engine of a table having foreign key更改具有外键的表的引擎
【发布时间】:2014-06-26 17:16:26
【问题描述】:

我正在尝试编写一个脚本,将某个表的引擎更改为 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 进行检查。

【问题讨论】:

    标签: mysql foreign-keys alter-table


    【解决方案1】:

    在不删除外键约束的情况下,您无法将表的引擎更改为不支持外键的引擎。

    Documentation for the MEMORY engine

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

    【讨论】:

      猜你喜欢
      • 2010-12-20
      • 1970-01-01
      • 1970-01-01
      • 2021-01-11
      • 2016-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-13
      相关资源
      最近更新 更多