gpt4 book ai didi

mysql - 你能自动创建一个不强制外键约束的 mysqldump 文件吗?

转载 作者:IT老高 更新时间:2023-10-28 12:58:00 28 4
gpt4 key购买 nike

当我在我的数据库上运行 mysqldump 命令然后尝试导入它时,它会失败,因为它会尝试按字母顺序创建表,即使它们可能有一个外键引用文件中稍后的表。 documentation 中似乎没有任何内容我找到了像 this 这样的答案说要在创建文件后更新文件以包含:

set FOREIGN_KEY_CHECKS = 0;
...original mysqldump file contents...
set FOREIGN_KEY_CHECKS = 1;

有没有办法自动设置这些行或以必要的顺序导出表格(无需手动指定所有表格名称,因为这可能很乏味且容易出错)?我可以将这些行包装在脚本中,但想知道是否有一种简单的方法可以确保我可以转储文件,然后在不手动更新的情况下导入它。

最佳答案

mysqldump 命令自版本 4.1.1 起包含在 MySQL 中默认情况下会生成一个关闭外键检查的脚本。转储文件顶部附近包含以下行:

/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;

/*!40014 ... */ 语法是 conditional comment这将在 MySQL 4.0.14 及更高版本上执行。旧的外键检查设置在转储文件末尾恢复:

/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;

注意条件注释是interpreted by the the client (而不是服务器)。如果您使用不支持它们的客户端加载转储文件,则不会禁用外键检查,并且您可能会遇到错误。为了获得最佳效果,我建议使用官方 mysql 命令行客户端加载转储文件:

mysql -hserver -uuser -p database < dumpfile.sql

同样值得注意的是,如果 mysqldump 使用 --compact 运行选项,然后从转储文件中省略禁用和重新启用外键检查的命令。

关于mysql - 你能自动创建一个不强制外键约束的 mysqldump 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2429655/

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