转储数据时的外键约束

Posted

技术标签:

【中文标题】转储数据时的外键约束【英文标题】:Foreign key constraints while dumping data 【发布时间】:2010-11-25 20:06:21 【问题描述】:
mysqldump --compact --no-create-info -h192.168.150.180 -uroot -p live pnlbus_stops | sed s/pnlbus_stops/bus_stops/g | mysql test

我收到一个错误: 第 1 行出现错误 1062 (23000):密钥 1 的重复条目“AN”

这是因为测试数据库中的 bus_stops 表具有外键约束。在从“实时”数据库插入之前,如何在 SINGLE STATEMENT 中截断测试数据库中的 bus_stops 表?

【问题讨论】:

我已经设法通过在 mysqldump 语句之前添加 echo "truncate table test.bus_stops" 来解决它。但是有没有更好的方法? 截断表?但我不明白你要做什么...... 【参考方案1】:

set FOREIGN_KEY_CHECKS = 0;

在转储文件的顶部

然后放

SET FOREIGN_KEY_CHECKS = 1;

在转储文件的底部

【讨论】:

我只是重新阅读了您的问题,我也不明白您要做什么

以上是关于转储数据时的外键约束的主要内容,如果未能解决你的问题,请参考以下文章

sql。两个间的外键约束和插入数据问题

Oracle如何创建一个置空的外键约束?

数据库保存的外键约束

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

Mysql的外键约束内外连接查询以及锁

Yesod / Persistent中的外键约束?