【问题标题】:SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row (laravel5)SQLSTATE [23000]:完整性约束违规:1452 无法添加或更新子行(laravel5)
【发布时间】:2018-04-17 04:53:40
【问题描述】:

起初,我很抱歉英语不好。

我在 MariaDB(innoDB, laravel5) 中创建了表,如下所示:

*用户表

    Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('email')->unique();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
    });

*文章表

    Schema::create('articles', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('user_id')->unsigned()->index();
        $table->string('title');
        $table->text('content');
        $table->timestamps();

        $table->foreign('user_id')->references('id')->on('users')->onUpdate('cascade')->onDelete('cascade');
    });

*标签表

    Schema::create('tags', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('slug')->index();
        $table->timestamps();
    });

*article_tag 表

   Schema::create('article_tag', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('article_id')->unsigned();
        $table->integer('tag_id')->unsigned();

        $table->foreign('article_id')->references('id')->
        on('articles')->onDelete('cascade');
        $table->foreign('tag_id')->references('id')->
        on('tags')->onDelete('cascade');
    });

所以当我尝试将值插入 article_tag 表时,我得到:

insert into `article_tag` (`article_id`, `tag_id`) values (3, 9);

*错误信息

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`mmdance`.`article_tag`, CONSTRAINT `article_tag_tag_id_foreign` FOREIGN KEY (`tag_id`) REFERENCES `tags` (`id`) ON DELETE CASCADE) (SQL: insert into `article_tag` (`article_id`, `tag_id`) values (1, 9))

我已经看过有关此主题的其他帖子,但没有解决。
谢谢你的帮助。谢谢。

【问题讨论】:

  • 您对错误有什么不明白的地方?您正在插入 id,但引用表中不存在引用值。
  • 哦..对不起,我明白了。

标签: php mysql database laravel mariadb


【解决方案1】:

只需导入您正在创建/更新记录的 Schema 外观。

\Schema::disableForeignKeyConstraints();
// Your query
\Schema::enableForeignKeyConstraints(); 

【讨论】:

  • 如果您想在创建或更新记录时禁用外键约束,有什么意义。这是个坏主意。
【解决方案2】:

删除外键就可以了。 或者做一些参考键连接到基表

【讨论】:

    猜你喜欢
    • 2015-09-02
    • 2020-09-29
    • 2016-05-31
    • 2020-01-23
    • 2021-02-14
    • 2016-07-10
    • 2018-02-12
    • 2021-09-29
    相关资源
    最近更新 更多