我有一个mysql数据库,表中有很多外来依赖的表,例如说,有三个表 - 学生,部门,课程。 示例方案
{{1}}
因此,自课程以来,学生依赖于部门,我创建表格的顺序是部门,课程,学生。
当我创建mysqldmp文件时,脚本中表创建的顺序是随机的。但是,当我尝试恢复数据库时,它没有给我任何错误。有人可以向我解释一下吗?
答案 0 :(得分:3)
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
您可以在此类文件的标题中找到它们。它禁用了比4.0.14更新的MySQL服务器版本的外键检查(我认为这是40014的读取方式。)
您注意到脚本底部通常有一个类似的块将这些块返回到之前的值。
答案 1 :(得分:2)
这种情况发生或有效,因为恢复它时不会进行FOREIGN KEY
检查。在您的转储文件中,您将找到如下所示的注释行
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
此处/*!40014 ... */
是条件评论。它的作用是,禁用FK检查,一旦转储恢复,它就会重新启用FK检查。见MySQL Documentation