dongwo5940 2018-06-09 14:29
浏览 97
已采纳

一般错误1215:无法添加外键约束

I'm getting the following error:

SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table subtags add constraint subtags_tag_id_foreign foreign key (tag_id) references id (tags) on delete cascade)

After looking at other answers regarding this error on stackoverflow and this blogpost: https://www.percona.com/blog/2017/04/06/dealing-mysql-error-code-1215-cannot-add-foreign-key-constraint/ I still can't figure out why I'm getting the error.

This is the migration for the subtag table:

public function up()
{
    Schema::create('subtags', function (Blueprint $table) {
        $table->engine = 'InnoDB';
        $table->integer('tag_id')->unsigned();
        $table->integer('id')->unsigned();
        $table->string('name');
        $table->timestamps();
    });

    Schema::table('subtags', function (Blueprint $table) {
        $table->foreign('tag_id')
            ->references('tags')
            ->on('id')
            ->onDelete('cascade');

        $table->primary(array('tag_id', 'id'));
    });
}

At the point of error the tag table has already been created and I can't spot any typo's but just to make sure, here is the tag table migration:

public function up()
{
    Schema::create('tags', function (Blueprint $table) {
        $table->engine = 'InnoDB';
        $table->increments('id');
        $table->string('name');
        $table->timestamps();
    });
}
  • 写回答

2条回答 默认 最新

  • dongzhentiao2326 2018-06-09 15:13
    关注

    Your query shows that you have misplaced the column & table in:

    Schema::table('subtags', function (Blueprint $table) {
        $table->foreign('tag_id')
              ->references('tags')
              ->on('id')
              ->onDelete('cascade');
    
        $table->primary(array('tag_id', 'id'));
    });
    

    Reference should be "column" on "Table" like:

    Schema::table('subtags', function (Blueprint $table) {
        $table->foreign(id'tag_id')
              ->references('id')
              ->on('tags')
              ->onDelete('cascade');
    
        $table->primary(array('tag_id', 'id'));
    });
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵