有没有办法用mysqlimport选项卡选项禁用外键检查?

时间:2013-06-10 00:57:19

标签: mysql command-line foreign-keys mysqlimport

之前我问this question,我刚回到这个问题。

  

我有一个MySQL数据库的备份脚本,使用带有mysqldump选项的--tab,因此它为结构生成.sql文件,并生成.txt文件(管道) - 分离)的内容。

链接问题的答案在导入SQL文件(表结构)时有效,但在导入某些表时也会得到外键约束错误(因为该表有自己的外键)。这两个命令是这样的:

cat <(echo "SET FOREIGN_KEY_CHECKS=0;") "table.sql" | mysql [user/pass] database
mysqlimport [user/pass] --local --fields-terminated-by="|" database "table.txt"

看起来这是requested years ago on their bug tracker但从未实施过。有什么方法吗?

请注意,由于各种原因,我想继续使用tab选项(它更快,并且使用git更好,因为每行都在一个单独的行上)。

1 个答案:

答案 0 :(得分:12)

在运行数据库创建脚本之前,您可以通过以下命令行将mysql全局系统变量'foreign_key_checks'临时设置为off / zero值。

mysql --host=localhost --user=USER --password -e "SET GLOBAL foreign_key_checks=0"

在命令行上输入密码是不安全的。省略它并仅指定--password而不是--password=MYPATH将迫使系统在继续之前询问用户。