完整性约束违规:1452无法添加或更新子行:外键约束失败

时间:2014-02-13 13:15:07

标签: laravel

这似乎是一个常见的问题,但我找不到与此直接相关的答案。

我有一个用户和设计表,我正在尝试在设计表中添加一个外键,使其引用到用户表上的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`))

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

在mysql'增量'是int(10)与'无符号'属性。 但是,如果您只是添加新列并尝试引用它并获取SQLSTATE [23000] - 1452错误消息,请尝试插入有效的引用(键)。或清空两个表。