我对外键约束有疑问

时间:2019-11-20 15:29:12

标签: laravel

SQLSTATE [HY000]:常规错误:1005无法创建表project#sql-4b4_46(错误号:150“外键约束格式不正确”)(SQL:更改表{ {1}}添加约束projects外键(projects_owner_id_foreign)引用删除级联上的owner_idusers

id

3 个答案:

答案 0 :(得分:0)

首先创建用户表,然后创建项目表并为用户分配外键。

答案 1 :(得分:0)

使用外键时必须使用unsignedBigInteger

$table->unsignedBigInteger('owner_id');

当然,您必须首先创建目标表?因此,首先创建users,然后再创建projects

答案 2 :(得分:0)

如果主键使用的是unsignedBigInteger,那么外键也应该使用的是unsignedBigInteger

     Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
     });

   Schema::create('projects', function (Blueprint $table) {
                $table->bigIncrements('id');
                $table->unsignedBigInteger('owner_id');
                $table->string('title');
                $table->text('description');
                $table->timestamps();
                $table->foreign('owner_id')->references('id')->on('users')->onDelete('cascade');
   });