违反完整性约束 laravel 9
Integrity constraint violation laravel 9
我正在使用 Laravel 9 来设置我的迁移,但我一直收到此错误 Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails
我已经查过了,我很困惑,因为我的 user_id 在 table urls 确实引用了用户的 id 列 table?
我还确保在我的 url.php 模型中保护了 user_id
的可填充项,我将其视为对类似问题的回答。
public function up()
{
Schema::create('urls', function (Blueprint $table) {
$table->id();
$table->text('full_url');
$table->string('short_url')->unique();
$table->foreignId('user_id')->constrained();
$table->timestamps();
});
}
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
外键约束是用于确保数据完整性的机制之一。在这种情况下,这意味着您要插入的外键必须在关联的外键 table.
中具有对应关系
我举个例子。假设您有一个 posts table,它有一个 user_id
外键。
然后在您的 users
table 中,您有以下 ID:1
、2
、3
和 4
。
如果您尝试 insert/update 一个 post,则所提供的 user_id
必须存在于 users
table 之内。因此,这意味着如果您尝试插入一个 user_id
为 7
的新 post,它将失败,因为 7
中没有 id
users
table.
我正在使用 Laravel 9 来设置我的迁移,但我一直收到此错误 Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails
我已经查过了,我很困惑,因为我的 user_id 在 table urls 确实引用了用户的 id 列 table?
我还确保在我的 url.php 模型中保护了 user_id
的可填充项,我将其视为对类似问题的回答。
public function up()
{
Schema::create('urls', function (Blueprint $table) {
$table->id();
$table->text('full_url');
$table->string('short_url')->unique();
$table->foreignId('user_id')->constrained();
$table->timestamps();
});
}
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
外键约束是用于确保数据完整性的机制之一。在这种情况下,这意味着您要插入的外键必须在关联的外键 table.
中具有对应关系我举个例子。假设您有一个 posts table,它有一个 user_id
外键。
然后在您的 users
table 中,您有以下 ID:1
、2
、3
和 4
。
如果您尝试 insert/update 一个 post,则所提供的 user_id
必须存在于 users
table 之内。因此,这意味着如果您尝试插入一个 user_id
为 7
的新 post,它将失败,因为 7
中没有 id
users
table.