php – laravel errno 150外键约束形成错误

前端之家收集整理的这篇文章主要介绍了php – laravel errno 150外键约束形成错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有人可以帮我解决这个问题吗?

有3个表有2个外键:

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

        Schema::create('firms',function (Blueprint $table) {
                    $table->increments('id');
                    $table->string('title')->nullable();  
                    $table->integer('user_id')->unsigned()->nullable();
                    $table->foreign('user_id')->references('id')->on('users');
                    $table->timestamps();
                });
       Schema::create('jobs',function (Blueprint $table) {
            $table->increments('id');
            $table->string('title')->nullable();
            $table->integer('firm_id')->unsigned()->nullable();
            $table->foreign('firm_id')->references('id')->on('firms');
            $table->timestamps();
        });

运行迁移后出错:

[Illuminate\Database\QueryException]
  sqlSTATE[HY000]: General error: 1005 Can't create table `job`.`#sql-5fc_a1`
   (errno: 150 "Foreign key constraint is incorrectly formed") (sql: alter ta
  ble `firms` add constraint `firms_user_id_foreign` foreign key (`user_id`)
  references `users` (`id`))

  [PDOException]
  sqlSTATE[HY000]: General error: 1005 Can't create table `job`.`#sql-5fc_a1`
   (errno: 150 "Foreign key constraint is incorrectly formed")
对于外键,引用和引用字段必须具有完全相同的数据类型.

您可以在用户和公司中创建id字段作为有符号整数.但是,您将两个外键都创建为无符号整数,因此密钥的创建失败.

您需要将unsigned子句添加到id字段定义,或者从外键字段中删除unsigned子句.

猜你在找的Laravel相关文章