【问题标题】:Foreign keys error in migrations (Laravel 6.0)迁移中的外键错误(Laravel 6.0)
【发布时间】:2020-01-16 04:18:30
【问题描述】:

我试图弄清楚 Laravel 中的迁移是如何工作的。在这里你可以看到我正在创建 2 个表。在第二个表(RealNationalLeague)中,我在第一个表(RealNationalLeagueLevel)中有两列(real_nation_id,level)的外键。

public function up()
    {

        ...

        Schema::create(Model\RealNationalLeagueLevel::TABLE, function (Blueprint $table) {
            $table->unsignedInteger("real_nation_id");
            $table->unsignedTinyInteger("level");

            $table->foreign("real_nation_id")->references("id")->on(Model\RealNation::TABLE);
            $table->primary(["real_nation_id", "level"]);
        });


        Schema::create(Model\RealNationalLeague::TABLE, function (Blueprint $table) {
            $table->increments("id");
            $table->unsignedInteger("real_nation_id");
            $table->unsignedTinyInteger("level");
            $table->string("name", 32);

            $table->foreign("real_nation_id")->references("real_nation_id")->on(Model\RealNationalLeagueLevel::TABLE); // this works
            $table->foreign("level")->references("level")->on(Model\RealNationalLeagueLevel::TABLE); // this does not
        });
    }

运行迁移不起作用。它抛出 QueryException:

SQLSTATE[HY000]: General error: 1005 Can't create table `testdb`.`#sql-17a00_448a37` (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter table `real_national_league` add constraint `real_national_league_level_foreign` foreign key (`level`) references `real_national_league_level` (`level`))

知道为什么它不起作用吗?感谢您的帮助。

【问题讨论】:

标签: php mysql sql laravel


【解决方案1】:

您要引用的表,您必须先创建它,然后在另一个迁移中,创建从该表到该引用表的列。

【讨论】:

  • 这应该是一条评论
猜你喜欢
  • 2019-01-31
  • 2014-09-27
  • 2018-09-22
  • 2016-07-06
  • 2015-08-14
  • 2016-02-10
  • 2020-09-14
  • 2015-03-02
  • 2019-02-09
相关资源
最近更新 更多