: 违反完整性约束:1452 无法添加或更新子行:外键约束在 laravel 迁移中失败

: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails in laravel migration

在我的迁移文件中,我将组织 ID 添加到用户的 table,我尝试了下面的所有代码但尚未解决

class AddOrganizationIdToUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
//            $table->foreignId('organization_id')->references('id')->on('organizations')->onDelete('cascade');
            $table->foreignId('organization_id')->constrained('organizations')->cascadeOnDelete();
//            $table->foreign('organization_id')->references('id')->on('organizations')->onDelete('cascade');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('users', function (Blueprint $table) {
            //
        });
    }

如果用foreignId写需要:

$table->foreignId('organization_id')->constrained('organizations')->cascadeOnDelete();

foreign

$table->foreign('organization_id')->references('id')->on('organizations')->onDelete('cascade');

我有我用户的 table 的数据,所以它在迁移时出错,为了解决这个问题,我将字段添加为可为 nullable

$table->foreignId('organization_id')->nullable()->references('id')->on('organizations')->onDelete('cascade');

可能的问题是此迁移在 organizations table 迁移之前 运行ning,当它试图找到它以创建它失败的约束。

我建议在 AddOrganizationIdToUsersTable 上:

Schema::table('users', function (Blueprint $table) {
            $table->foreignId('organization_id');
        });

关于组织创建迁移:

Schema::table('users', function(Blueprint $table) {
            $table->foreign('organization_id')->references('id')->on('organizations');
        });

#2 解决方案: 通过更改文件名称上的时间戳,将组织 table 迁移到 运行,然后再添加 AddOrganizationIdToUsersTable