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

在mysqldmp中,表的创建顺序不重要吗?,mysql,Mysql,我有一个mysql数据库,其中的表之间有很多外部依赖关系,例如,有三个表-:学生、系、课程。 示例方案 >Department(ID,Name) >Course(ID,Name,Dep_ID){Dep_ID foreign} >Student(ID,NAME,Dep_Id,Course_Id) {Dep_ID, Course_id Foreign Keys) 因为课程,学生都依赖于部门,所以我创建表格的顺序是部门,课程,学生 当我创建mysqldmp文件时,脚本中表的创建顺序

我有一个mysql数据库,其中的表之间有很多外部依赖关系,例如,有三个表-:学生、系、课程。 示例方案

>Department(ID,Name)
>Course(ID,Name,Dep_ID){Dep_ID foreign}
>Student(ID,NAME,Dep_Id,Course_Id) {Dep_ID, Course_id Foreign Keys)
因为课程,学生都依赖于部门,所以我创建表格的顺序是部门,课程,学生


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

这种情况之所以发生或起作用,是因为在还原时,它不会执行
外键检查。在您的转储文件中,您会发现一条注释行,如下所示

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

这里
/*!40014 ... */是一个条件注释。它所做的是禁用FK检查,并在恢复转储后重新启用FK检查。请参阅发生的或起作用的,因为还原时它不执行
外键检查。在您的转储文件中,您会发现一条注释行,如下所示

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

这里
/*!40014 ... */是一个条件注释。它所做的是禁用FK检查,并在恢复转储后重新启用FK检查。请参见

/*!40014设置@OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS,FOREIGN_KEY_CHECKS=0*/

您可以在这些文件的标题中找到这些文件。它在高于4.0.14的MySQL服务器版本上禁用外键检查(我认为这就是40014的读取方式)


请注意,在脚本的底部,通常会有一个类似的块将这些值返回到它们以前的值。

/*!40014设置@OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS,FOREIGN_KEY_CHECKS=0*/

您可以在这些文件的标题中找到这些文件。它在高于4.0.14的MySQL服务器版本上禁用外键检查(我认为这就是40014的读取方式)

您注意到,在脚本的底部,通常有一个类似的块将这些值返回到它们以前的值