我试图向用户表中添加一个permission_id外键,该外键将引用权限表中的id。目前,我在移民之后建造了:
<?php
class AddPermissionIdForeignKeyToUsersTable extends Migration
{
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->unsignedInteger('permission_id')->after('id');
$table->foreign('permission_id')->references('id')->on('permissions')->onDelete('cascade');
});
}
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('permission_id');
});
}
}但我得到了以下错误:
SQLSTATE23000:完整性约束违反: 1452不能添加或更新子行:外键约束失败(
eyes.#sql-22f0_3dd、约束users_permission_id_foreign外键(permission_id)在删除级联中引用p ermissions(id) ) (SQL: alterusers添加约束users_permission_id_foreign外键(permission_id)引用permissions(id) 在PDOStatement.php第144行: SQLSTATE23000:完整性约束违反:1452年不能添加或更新子行:外键约束失败(eyes.#sql-22f0_3dd、constraintusers_permission_id_foreignIntegrity (permission_id)引用p ermissions(id) ) 在PDOStatement.php第142行中: SQLSTATE23000:完整性约束违反:1452年不能添加或更新子行:外键约束失败(eyes.#sql-22f0_3dd、constraintusers_permission_id_foreignIntegrity (permission_id)引用p ermissions(id) )
发布于 2018-08-03 10:27:49
如果表用户中已经有数据,则需要将字段permission_id声明为可空。
$table->unsignedInteger('permission_id')->nullable()->after('id');
https://stackoverflow.com/questions/51670046
复制相似问题