:完整性约束违规:1452 无法添加或更新子行:laravel 迁移中的外键约束失败
Posted
技术标签:
【中文标题】:完整性约束违规:1452 无法添加或更新子行:laravel 迁移中的外键约束失败【英文标题】:: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails in laravel migration 【发布时间】:2021-11-11 09:01:16 【问题描述】:在我的迁移文件中,我将组织 ID 添加到用户表中,我尝试了以下所有代码但尚未解决
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)
//
);
【问题讨论】:
您可以编辑您的帖子以包含您的迁移文件吗? 应该是$table->foreignId('organization_id')->constrained()->onDelete('cascade');
您的组织表需要在迁移之前添加到迁移中。
【参考方案1】:
我的用户表上有数据,因此在迁移时出现错误,为了解决这个问题,我将该字段添加为可为空
$table->foreignId('organization_id')->nullable()->references('id')->on('organizations')->onDelete('cascade');
【讨论】:
【参考方案2】:如果你写foreignId
需要:
$table->foreignId('organization_id')->constrained('organizations')->cascadeOnDelete();
或者只是foreign
$table->foreign('organization_id')->references('id')->on('organizations')->onDelete('cascade');
【讨论】:
无法添加或更新子行:外键约束失败 你有organizations
表吗?需要先迁移该表
语法错误或访问冲突:1072 表中不存在键列“organization_id”
我正在同时迁移两个迁移组织,然后将组织 ID 添加到用户
需要更多信息。添加以质疑所有涉及的迁移【参考方案3】:
问题可能是此迁移在 organizations 表迁移之前运行,当它试图找到它以创建约束时它失败了。
我建议在 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 解决方案: 通过更改文件名上的时间戳,将组织表的迁移移动到您的 AddOrganizationIdToUsersTable 之前运行
【讨论】:
以上是关于:完整性约束违规:1452 无法添加或更新子行:laravel 迁移中的外键约束失败的主要内容,如果未能解决你的问题,请参考以下文章
完整性约束违规:1452 无法将子行添加或更新到我的数据库中
SQLSTATE[23000]:完整性约束违规 1452 无法添加或更新子行:外键约束失败
Innobyte 插件问题:SQLSTATE [23000]:完整性约束违规:1452 无法添加或更新子行