首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >1215不能添加外键

1215不能添加外键
EN

Stack Overflow用户
提问于 2018-12-03 07:17:09
回答 3查看 85关注 0票数 0

Larvel 5.6.3 PHP 7.2.10

对于php artisan migrate:fresh,我得到以下错误

代码语言:javascript
复制
General error: 1215 Cannot add foreign key constraint (SQL: alter table `videos` add constraint `videos_video_identified_by_foreign` foreign key (`video_identified_by`) references `users` (`id`))

用户表存储文件-> 2014_10_12_000000_create_users_table视频表迁移文件-> 2018_12_02_122553_create_videos_table

通常,当父表不存在并且我们在表中使用它的列作为外键时,就会发生这种情况,但是可以看到,应该先创建用户表,然后创建视频表,然后再创建这个错误。

用户表

代码语言:javascript
复制
Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });

视频

代码语言:javascript
复制
 Schema::create('videos', function (Blueprint $table) {
    $table->increments('video_id');
    $table->text('video_link');
    $table->text('video_description');
    $table->string('video_category');
    $table->string('video_language');
    $table->unsignedInteger('video_identified_by');
    $table->timestamps();            
});

Schema::table('videos', function($table) {
    $table->foreign('video_identified_by')->references('id')->on('users');
});
EN

回答 3

Stack Overflow用户

发布于 2018-12-03 07:35:43

嗨,试试看,这对我来说很好。

代码语言:javascript
复制
<?php
    $table->integer('video_identified_by')->unsigned();
    $table->foreign('video_identified_by')->references('id')->on('user')
          ->onUpdate('RESTRICT')->onDelete('CASCADE');      
?>

然后迁移:刷新

票数 0
EN

Stack Overflow用户

发布于 2018-12-03 08:23:15

啊,你在表视频中修改你的身份证,试试这个。

代码语言:javascript
复制
     Schema::create('videos', function (Blueprint $table) {
        $table->increments('id');
        $table->text('video_link');
        $table->text('video_description');
        $table->string('video_category');
        $table->string('video_language');
        $table->integer('video_identified_by')->unsigned();
        $table->foreign('video_identified_by')->references('id')->on('users')
          ->onUpdate('RESTRICT')->onDelete('CASCADE');   
        $table->timestamps();            
    });

    }
 public function down()
    {
        Schema::dropIfExists('videos');
    }
票数 0
EN

Stack Overflow用户

发布于 2018-12-04 11:38:40

添加onDelete级联并将unsignedInteger更改为无签名

代码语言:javascript
复制
Schema::create('videos', function (Blueprint $table) {
$table->increments('video_id');
$table->text('video_link');
$table->text('video_description');
$table->string('video_category');
$table->string('video_language');
$table->unsigned('video_identified_by');
$table->timestamps();            
});

Schema::table('videos', function($table) {
$table->foreign('video_identified_by')->references('id')->on('users')- 
>onDelete('cascade');
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53589111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档