1
這似乎是一個常見問題,但我無法找到與此直接相關的答案。完整性約束違規:1452無法添加或更新子行:外鍵約束失敗
我有一個用戶和設計表,我試圖添加一個外鍵到設計表,使其引用用戶表上的ID。
爲用戶表中的遷移:
Schema::create('users', function(Blueprint $table) {
$table->increments('id');
$table->string('username');
$table->string('email')->unique();
$table->string('password');
$table->timestamps();
});
的設計表中的遷移:
Schema::create('designs', function(Blueprint $table)
{
$table->engine = 'InnoDB';
$table->increments('id')->unsigned();
$table->string('title');
$table->timestamps();
});
,我試圖做添加外鍵的遷移:
public function up()
{
Schema::table('designs', function(Blueprint $table) {
$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('designs', function(Blueprint $table) {
$table->dropColumn('user_id');
});
}
但是我收到錯誤信息:
[Illuminate\Database\QueryException]
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`bootstrap`.`#sql-512_179`
, CONSTRAINT `designs_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)) (SQL: alter table `designs` add constraint designs_user_
id_foreign foreign key (`user_id`) references `users` (`id`))
我在這裏做錯了什麼?
根據你的'用戶'遷移,id列不是無符號的(儘管我不確定在'Laravel'中默認'increment'是未簽名還是未確認'),所以也許這就是你的問題? – alexrussell
就是這樣。謝謝。 – babbaggeii
我不確定這是真的 - 當我使用增量時,它被設置爲無符號(即使在laravel 3中)。 –