我正在使用Laravel 9来设置我的迁移,但我一直得到这个错误Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails
我已经查了这个,我很困惑,因为我的user_id在表url中引用了用户表上的id列?
我还确保我在我的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();
});
}
外键约束是用于确保数据完整性的机制之一。在这种情况下,这意味着您要插入的外键必须在关联的外表中具有对应关系。
让我举个例子。假设你有一个posts表,它有一个user_id
外键。然后在users
表中,您有以下id:1
,2
,3
和4
。如果您尝试插入/更新一个帖子,提供的user_id
必须存在于users
表中。因此,这意味着如果您试图插入7
的user_id
的新帖子,它将失败,因为users
表中没有7
的id
。