这似乎是一个常见的问题,但我找不到与此直接相关的答案。
我有一个用户和设计表,我正在尝试在设计表中添加一个外键,使其引用到用户表上的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`))
我在这里做错了什么?
答案 0 :(得分:0)
在mysql'增量'是int(10)与'无符号'属性。 但是,如果您只是添加新列并尝试引用它并获取SQLSTATE [23000] - 1452错误消息,请尝试插入有效的引用(键)。或清空两个表。