SQLSTATE [HY000]:一般错误:1005 无法创建表`Data`.`company eligibilities`(errno:150“外键约束形成错误”)

Posted

技术标签:

【中文标题】SQLSTATE [HY000]:一般错误:1005 无法创建表`Data`.`company eligibilities`(errno:150“外键约束形成错误”)【英文标题】:SQLSTATE[HY000]: General error: 1005 Can't create table `Data`.`company_eligibilities` (errno: 150 "Foreign key constraint is incorrectly formed") 【发布时间】:2020-12-02 04:03:03 【问题描述】:
 public function up()
    
        Schema::create('company_eligibilities', function (Blueprint $table) 
            $table->id();
            $table->string('marks');
            $table->integer('company_id')->unsigned();
            $table->timestamps();

            $table->foreign('company_id')
                ->references('id')->on('companies')
                ->onDelete('cascade')
                ->onUpdate('cascade');
        );
    

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

公司迁移在执行上述迁移之前已经完成

当我尝试与外键一起创建表时出现上述错误。我是不是做错了什么??

【问题讨论】:

【参考方案1】:

确保在迁移company_eligibilities 之前迁移companies,将您的外键ID 更改为 无符号大整数,Laravel 5.8 将默认外键设为无符号大整数,6.x7.x 也一样:

$table->bigInteger('company_id')->unsigned();

或者,

$table->unsignedBigInteger('company_id');

【讨论】:

以上是关于SQLSTATE [HY000]:一般错误:1005 无法创建表`Data`.`company eligibilities`(errno:150“外键约束形成错误”)的主要内容,如果未能解决你的问题,请参考以下文章

SQLSTATE [HY000]:一般错误:1364 字段“标题”没有默认值

SQLSTATE [HY000]:一般错误:2053

PDO 错误:SQLSTATE [HY000]:一般错误:2031

SQLSTATE[HY000]:一般错误:在 Laravel 中迁移期间出现 1005

SQLSTATE [HY000]:一般错误:1364 字段 'uID' 没有默认值

SQLSTATE[HY000]:一般错误:1366 整数值不正确: