当我有关系表(父表和子表)时,可以一次将它们一起迁移吗?还是需要先迁移子表?
答案 0 :(得分:1)
如果没有外键约束,则可以按任何顺序迁移。但是,如果确实有外键(FK),则它取决于您的方案,那么您也可以从为表指定ON UPDATE
和ON DELETE
规则中受益。有关详情,请参见mysql docs。
答案 1 :(得分:1)
您不能一次迁移两个表,代码不会在并行处理中运行
首先迁移孩子会导致错误
Illuminate \ Database \ QueryException:SQLSTATE [HY000]:常规错误:1005无法创建表
database
。child
(错误号: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将尝试创建一个数据库表,该数据库表的列引用了尚不存在的表中的列
希望这会有所帮助