gpt4 book ai didi

php - 转换为 MyISAM, `foreign_key_checks = 0` 不工作

转载 作者:行者123 更新时间:2023-11-29 00:11:48 24 4
gpt4 key购买 nike

我正在编写一些脚本来以编程方式自动执行数据库迁移,并且在我没有设计、拥有或维护的系统中工作的一系列妥协结束时,我需要转换一些 MySQL InnoDB 表到 MyISAM 表。但是,当我尝试更改表格时

mysql> ALTER TABLE catalog_category_entity ENGINE=MyISAM;
ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails
mysql>

MySQL 提示。这是意料之中的。但是,如果我禁用 foreign_key_checks,我会得到相同的结果

mysql> SET foreign_key_checks = 0;
mysql> ALTER TABLE catalog_category_entity ENGINE=MyISAM;
ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails

无论我在全局或 session 级别设置 key 检查如何,都会发生这种情况。我假设这里的问题是问题中的表有引用它的 other InnoDB 表,并且 MySQL 拒绝以 InnoDB 表引用不是 InnoDB 的表的状态结束。 (我在这方面可能不正确,我很高兴得到纠正)

有没有快速处理这种情况的方法?我基本上希望数据库中的所有表都是 MyISAM,并且自己追踪所有关系和/或手动删除约束似乎非常耗时,而计算机更擅长的事情。

如果答案是“忍住并开始工作”,我很高兴听到专家这么说——我只是不想在不需要的时候浪费时间。

如果我在 PHP 中编程的语言很重要,但我很高兴需要其他语言的解决方案。

最佳答案

MyISAM 不支持外键。在更改引擎之前删除 key :

> ALTER TABLE catalog_category_entity DROP FOREIGN KEY fk_name;
> ALTER TABLE catalog_category_entity ENGINE=MyISAM;

您可以通过调用找到外键名称:

> SHOW CREATE TABLE catalog_category_entity;

这可能会有帮助:Delete all foreign keys in database(MySql)

关于php - 转换为 MyISAM, `foreign_key_checks = 0` 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24744088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com