表创建的顺序在mysqldmp中不重要吗?

时间:2015-09-02 20:37:56

标签: mysql

我有一个mysql数据库,表中有很多外来依赖的表,例如说,有三个表 - 学生,部门,课程。 示例方案

{{1}}

因此,自课程以来,学生依赖于部门,我创建表格的顺序是部门,课程,学生。

当我创建mysqldmp文件时,脚本中表创建的顺序是随机的。但是,当我尝试恢复数据库时,它没有给我任何错误。有人可以向我解释一下吗?

2 个答案:

答案 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