MySQL创建表:错误1005 errno:150“外键约束形成错误”

Posted

技术标签:

【中文标题】MySQL创建表:错误1005 errno:150“外键约束形成错误”【英文标题】:MySQL create table: error 1005 errno: 150 “Foreign key constraint is incorrectly formed” 【发布时间】:2021-08-06 03:12:31 【问题描述】:

为什么使用 laravel 模式回复:

SQLSTATE[HY000]:一般错误:1005 无法创建表 employee_management.employees (errno: 150 "外键约束 格式不正确”)(SQL:alter table employees 添加约束 employees_city_id_foreign 外键 (city_id) 引用 city (id))

PDOException::("SQLSTATE[HY000]: 一般错误:1005 无法创建 表employee_management.employees (errno: 150 "外键 约束格式不正确")")

我的桌子:

  Schema::create('employees', function (Blueprint $table) 
            $table->increments('id', true);
            $table->string('lastname', 60);
            $table->string('firstname', 60);
            $table->string('middlename', 60);
            $table->string('address', 120);
            $table->integer('city_id')->unsigned();
            $table->integer('state_id')->unsigned();
            $table->integer('country_id')->unsigned();;
            $table->foreign('city_id')->references('id')->on('city');
            $table->foreign('state_id')->references('id')->on('state');
            $table->foreign('country_id')->references('id')->on('country');
            $table->char('zip', 10);
            $table->integer('age')->unsigned();
            $table->date('birthdate');
            $table->date('date_hired');
            $table->integer('department_id')->unsigned();
            $table->integer('division_id')->unsigned();
            // $table->integer('company_id')->unsigned();
            $table->foreign('department_id')->references('id')->on('department');
            $table->foreign('division_id')->references('id')->on('division');
            // $table->foreign('company_id')->references('id')->on('company');
            $table->string('picture', 60);
            $table->timestamps();
            $table->softDeletes();
        );

我的第二张城市表:

Schema::create('city', function (Blueprint $table) 
            $table->increments('id', true);
            $table->integer('state_id')->unsigned();
            $table->foreign('state_id')->references('id')->on('state');
            $table->string('name', 60);
            $table->timestamps();
            $table->softDeletes();
        );

附:我的 Laravel 版本是 8.12

【问题讨论】:

这能回答你的问题吗? mysql Foreign key constraint is incorrectly formed error 【参考方案1】:

原因是您在创建 city 表之前尝试迁移 employee 表,这很重要,因为您的 employee 表通过外键依赖于 city 表。

要解决这个问题,首先尝试迁移城市表。

【讨论】:

天啊!非常感谢!

以上是关于MySQL创建表:错误1005 errno:150“外键约束形成错误”的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 错误:#1005 - 无法创建表 (errno: 150) 当我尝试创建超过 1 个 FK

MySQL 错误:#1005 - 无法创建表 (errno: 150) 当我尝试创建超过 1 个 FK

一般错误:1005 无法创建表 errno:150“外键约束格式不正确”)

外键错误 - 错误 1005 (HY000) ... 无法创建表 ... `stored_on` (errno: 150)

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

使用 mysql 工作台创建 CHAR 类型的外键时出错:错误 1005:无法创建表(错误号:150)