【发布时间】:2020-03-23 09:36:30
【问题描述】:
我有自定义迁移:
代码:
// Groups migration
Schema::create('groups', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->boolean('status')->default(false);
$table->timestamps();
});
// Clients migration
Schema::create('clients', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('fullname');
$table->integer('phone');
$table->date('birthday')->nullable();
$table->boolean('can_get_congratulations')->default(false);
$table->unsignedInteger('group_id')->default(null);
$table->foreign('group_id')
->references('id')
->on('groups')
->onDelete('cascade');
$table->boolean('status')->default(true);
$table->timestamps();
});
当我运行此迁移文件时,会收到错误消息:
Illuminate\Database\QueryException : SQLSTATE[HY000]: 一般错误: 1005 无法创建表
taxisms.#sql-1cc0_65c(errno: 150 "Foreign 键约束格式不正确”)(SQL:alter tableclientsadd 约束clients_group_id_foreign外键(group_id) 删除级联时引用groups(id)
我的迁移代码哪里出错了?
【问题讨论】:
-
这是
cascade,不是casecade -
@aynber 我更改为
cascade,但也出现错误。查看更新的问题 -
您能否也展示一下您的
groups迁移? -
@aynber 查看更新的问题
-
如果我没记错的话,列定义需要两边都匹配。由于
groups.id是一个无符号大整数,所以group_id也需要如此。将$table->unsignedInteger('group_id')更改为$table->unsignedBigInteger('group_id')