- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一些脚本来以编程方式自动执行数据库迁移,并且在我没有设计、拥有或维护的系统中工作的一系列妥协结束时,我需要转换一些 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;
关于php - 转换为 MyISAM, `foreign_key_checks = 0` 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24744088/
如何检查 FOREIGN_KEY_CHECKS 的当前值是多少? 我想确定该值为 1。 最佳答案 检查 5.1.5 Server System Variables::foreign_key_check
当我在 MySQL 中执行这个命令时: SET FOREIGN_KEY_CHECKS=0; 它会影响整个引擎还是只是我当前的交易? 最佳答案 它是基于 session 的,当设置您在问题中的方式时。
是否有一些与Mysql特定的指令等效的指令,这些指令禁止检查外键约束? SET FOREIGN_KEY_CHECKS = 0; 最佳答案 Oracle中没有命令可以立即禁用所有约束。 但是,似乎您想在
我有一个小数据库,我刚刚添加了一些表并设置了外键约束...... 现在我想上传一些数据并且已经阅读了关于使用以下内容来临时关闭检查... SET FOREIGN_KEY_CHECKS = 0; 我正在
我正在开发一种工具来合并两个具有相同架构但不同数据的数据库。 其中一部分是将所有外键更改为 ON UPDATE CASCADE,然后递增所有主键以避免冲突并保持外键指针正常工作。 我的问题是有时有一些
这个问题在这里已经有了答案: Does MySQL foreign_key_checks affect the entire database? (6 个答案) 关闭 9 年前。 真的找不到任何细节
我正在与: mysql: stable 5.6.22 (bottled) MySQL工作台6.2 我有以下顺序 DROP TABLE IF EXISTS invoicedetail; DROP TAB
是否有一些等效于禁用外键约束检查的 Mysql 特定指令? SET FOREIGN_KEY_CHECKS = 0; 最佳答案 Oracle 中没有命令会立即禁用所有约束。 但是,您似乎想在删除表的上下
当 FOREIGN_KEY_CHECKS=0 时实际发生了什么,然后我们添加一些无效行,或者向表添加外键,然后设置回 FOREIGN_KEY_CHECKS=1 而某些行有无效数据? 索引会被忽略吗?一
我有db_dump.sql -- MySQL dump 10.16 Distrib 10.1.23-MariaDB, for Linux (x86_64) -- -- Host: localhost
什么是 SET FOREIGN_KEY_CHECKS=0;做。因为我在sqlite的时候用过这个命令。现在,当我将数据库更改为 sqlite 时,表中有很多引用的所有员工 ID 都设置为手动员工代码。
我正在编写一些脚本来以编程方式自动执行数据库迁移,并且在我没有设计、拥有或维护的系统中工作的一系列妥协结束时,我需要转换一些 MySQL InnoDB 表到 MyISAM 表。但是,当我尝试更改表格时
我有两个表,它们具有 PK 和 FK 关系,如下所示。 查询 CREATE TABLE `sector_tab` ( `id` int(11) NOT NULL AUTO_INCREMENT, `co
这是我的功能: up: queryInterface => { return queryInterface.sequelize.query('SET FOREIGN_KEY_CHECKS = 0'
Setforeign_key_checks=0 在 mysql 提示符下运行良好,我能够删除具有外键约束的记录。 但是从 shell 中,如果我运行相同的命令,则不会显示错误,但是当我转到 mysql
我需要从一个批处理文件中运行大约 100 个 .sql 文件,以便将数据加载到我们应用程序的查找表中。我需要在加载过程开始之前禁用 contains,并在过程完成后再次启用它。 我当前的代码是
当 FOREIGN_KEY_CHECKS = 0 和执行 2 个查询时,我有一个奇怪的错误(除了 FOREIGN_CHECK_CHECKS 之外,这两种情况都相同。 该错误导致错误 ERROR 182
我正在尝试从 ISAM mysql 数据库迁移到 InnoDB mysql 数据库(数以百万计的记录/行)。因此,我尝试使用 mysqldbexport 仅从表中导出数据,这样我们就不需要在导出后调整
我想做的事情我已经做过无数次了,但现在从 MySql 5.6.26 升级到 5.6.27 失败了(在 5.7.x 中也失败了)。我有一个数据库,其中有一堆带有外键约束的表。我已经导出(使用 phpMy
我在 Flask 中使用 SQLAlchemy 创建数据库表 - 每个表至少有一个外键 - 它适用于 sqlite 但不适用于 MySQL - 在 MySQL 中创建表时出现外键完整性错误(未创建父表
我是一名优秀的程序员,十分优秀!