繁体   English   中英

不同级别的迁移表

[英]Migration tables with different level

当我有具有关系的表(父表和子表)时,我可以一次将它们一起迁移还是需要先迁移子表?

如果您没有外键约束,那么您可以按任何顺序迁移。 但是,如果您确实有外键 (FK),那么它取决于您的方案,那么您也可以从为您的表指定ON UPDATEON DELETE规则中受益。 请参阅mysql 文档

您不能一次迁移两个表,代码不会并行处理

并且先迁移孩子会报错

Illuminate\Database\QueryException: SQLSTATE[HY000]: General error: 1005 Can't create table database child (errno: 150 "外键约束格式不正确")

所以你必须先迁移父母

例如,假设用户有一只宠物(家养动物)

我们将有users表和pets表设置

Schema::create('pets', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->unsignedBigInteger('user_id');
    $table->foreign('user_id')->references('id')->on('users');
    $table->timestamps();
});

如果宠物迁移的文件名是

2013_11_06_151235_create_pets_table.php

users迁移的文件名是

2014_10_12_000000_create_users_table.php

您会收到上述错误,因此您必须将pets表迁移文件重命名为晚于users之一的日期

例如

2015_11_06_151235_create_pets_table.php

因为 Laravel 将尝试创建一个数据库表,其中的列引用表中尚不存在的列

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM