: 违反完整性约束: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
在我的迁移文件中,我将组织 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