如何更新具有外键约束的数据库?

Posted

技术标签:

【中文标题】如何更新具有外键约束的数据库?【英文标题】:How to update a database that has foreign keys constraints? 【发布时间】:2015-03-17 00:53:30 【问题描述】:

我有一台虚拟机 (VM_A),它运行一个 mysql 数据库 DB_A 模式,他的 tbl_1 中有 200 行。在另一个运行相同 DB_A 模式副本的虚拟机 (VM_B) 中,我在 tbl_1 中有 50 行。

我想用来自 DB_A 的数据更新 DB_B。

tbl_2 持有来自 tbl_1 的外键。

我已经从 DB_A 制作了一个 mysql 转储,以便在 DB_B 中运行,待更新。

我不想在 drop tbl_1 之前使用 drop 架构。

如果我尝试在 DB_B 中运行代码,我会遇到由 tbl_2 中的外键约束引起的错误。

在这种情况下更新 DB_B 的最佳方法是什么? 我已经测试过这个解决方案但没有工作https://dba.stackexchange.com/questions/40046/is-there-a-way-to-truncate-table-that-has-foreign-a-key

【问题讨论】:

您发布的链接与 sql server 相关,不一定适用于 mysql... mysql 复制可能吗? dev.mysql.com/doc/refman/5.1/en/replication-howto.html 我尝试过使用相同的想法,只是。 复制如何工作? 【参考方案1】:

https://dba.stackexchange.com/questions/40046/is-there-a-way-to-truncate-table-that-has-foreign-a-key 是 ms sql-server。在mysql中修改你的会话变量

SET FOREIGN_KEY_CHECKS=0;

【讨论】:

以上是关于如何更新具有外键约束的数据库?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改具有命名默认约束和命名外键约束的表添加列?

SQL表与表之间建立外键约束之后,怎么建立连级更新和删除?

如何修复“无法添加或更新子行:外键约束失败”[重复]

如何解决这个问题 - 无法删除或更新父行:外键约束失败

小议Oracle外键约束修改行为(一)

删除具有外键约束且无级联删除 SQL 的行