Laravel 5.3迁移外键约束不正确

时间:2017-02-09 21:34:29

标签: migration laravel-5.3

当我运行迁移时出现此问题iv出现此错误“[Illuminate \ Database \ QueryException]   SQLSTATE [HY000]:常规错误:1005无法创建表projecto_app#sql-118c_1d(错误号:150“外键约束不正确    形成“)(SQL:alter table parks在删除c上添加约束parks_user_id_foreign外键(user_id)引用usersid)   ascade)“

用户表创建第一秒是创建表 Parks

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateParksTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('parks', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('user_id');
            $table->string('name',100);
            $table->string('address',100);
            $table->string('post-code',6);
            $table->string('city',20);
            $table->timestamps();
            $table->softDeletes();
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
        });

    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('parks');
    }
}

文件名是: 2017_01_12_000000_create_users_table 2017_02_09_111834_create_parks_table

所以你可以看到用户表tkat的PK早于需要FK user_is的Park。

2 个答案:

答案 0 :(得分:2)

我希望你现在得到答案。 对于仍在寻找此解决方案的其他人,可能发生这种情况的原因之一是,当您创建迁移时,文件将使用创建日期 2017_05_05_042553_create_parks_table.php 进行标记。 在这种情况下,由于公园依赖于用户表,只需重命名用户并将创建日期更改为创建日期之前的任何日期公园表。

答案 1 :(得分:0)

我已将Laravel的默认users表名更改为user。因此,在更改迁移文件中的内容之后,运行php artisan migrate最终解决了该问题。