我创建了包含多个表的MySQL模式,然后我决定使用以下命令为每个表添加外键约束:
ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
如何获取架构备份(包含外键)以便我可以在另一台机器上复制它?
请注意SHOW CREATE TABLE
和mysqldump在我的情况下不起作用,因为它们只创建一个UNIQUE KEY约束而不是FOREIGN KEY。
答案 0 :(得分:6)
mysqldump也创建外键转储... 它增加了语法:
mysql> SET foreign_key_checks = 0;
mysql> SOURCE dump_file_name;
mysql> SET foreign_key_checks = 1;
您可以阅读以下手册: http://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html用于mysqldump的外键
答案 1 :(得分:0)
我经常遇到这个。这就是我这样做所以我可以使用命令行中的'pv'
在sql
转储恢复时获取进度条:
{ echo "SET foreign_key_checks=0;";pv sql.gz; echo "SET foreign_key_checks=1;"; } | mysql dbname
(我将几个命令放在{ }
中,以便在保留mysql
的进度条的同时将其作为单个命令处理{/ 1}}