添加外键失败,并显示“无法创建表”

时间:2019-11-27 20:30:25

标签: php laravel foreign-keys migration relational-database

我不明白我的迁移设置有什么问题。尝试为现有表添加外键时出现此错误。

Migrating: 2019_11_27_201351_add_foreign_key_to_tags

Illuminate\Database\QueryException  : SQLSTATE[HY000]: General error: 1005 Can't create table `tip`.`tags` (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter table `tags` add constraint `tags_website_id_foreign` foreign key (`website_id`) references `websites` (`id`))

我尝试在其上创建外键的表

public function up()
{
    Schema::create('tags', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('tagname')->nullable();
        $table->integer('website_id')->unsigned();
        $table->string('tag_category');
        $table->timestamps();
    });
}

这是我尝试引用的表格:

public function up()
{
    Schema::create('websites', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('websiteName')->nullable();
        $table->timestamps();
    });
}

这是我正在调用的迁移

public function up()
{
    Schema::table('tags', function (Blueprint $table) {
        //
        $table->foreign('website_id')->references('id')->on('websites');
    });
}

在创建所有表之后将调用此迁移。感谢您的帮助

1 个答案:

答案 0 :(得分:0)

好的,我找到了解决方案。创建标签表时,代替 $table->integer('website_id')->unsigned();

我需要使用$table->unsignedBigInteger('website_id');

更改此设置后,迁移成功运行