当前位置: 首页 > 知识库问答 >
问题:

一般错误:1005无法创建表,laravel中的外键约束格式不正确

慕飞章
2023-03-14

为什么要回复laravel模式

[Illumb\Database\QueryException]SQLSTATE[HY000]:一般错误:1005无法创建表test\sql-13cc\u d0(错误号:150“外键约束格式不正确”)(sql:alter tablecities添加结构城市/省份id\u外键(省份id)删除级联上的参考省(id

[PDOExc0019]SQLSTATE[HY000]:常规错误: 1005不能创建表test.#sql-13cc_d0(errno: 150"外键约束格式不正确")

第一桌

Schema::create('provinces', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->boolean('is_enable');
        $table->boolean('is_deletable');
        $table->boolean('is_editable');
        $table->boolean('deleted');
        $table->timestamps();
    }); 

第二桌

    Schema::create('cities', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->integer('province_id')->unsigned()->index();
        $table->boolean('is_enable');
        $table->boolean('is_deletable');
        $table->boolean('is_editable');
        $table->boolean('deleted');
        $table->timestamps();


        $table->foreign('province_id')
            ->references('id')->on('provinces')
            ->onDelete('cascade');

    });

共有3个答案

方寒
2023-03-14

尝试先创建表,然后添加约束:

Schema::create('cities', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name');
    $table->integer('province_id')->unsigned()->index();
    $table->boolean('is_enable');
    $table->boolean('is_deletable');
    $table->boolean('is_editable');
    $table->boolean('deleted');
    $table->timestamps();
});

Schema::table('cities', function (Blueprint $table) {
    $table->foreign('province_id')->references('id')->on('provinces')->onDelete('cascade');
});
高明辉
2023-03-14

您应该确保在城市表迁移之前,您的表迁移正在运行。

您应该更改省份城市迁移文件名,以确保省份表迁移文件开头的时间戳位于城市表之前。

艾望
2023-03-14

时间在继续,但我会评论其他的东西。

安迪尔是对的!你必须有相同的类型。在这种情况下,外键应该具有类型bigintger,因为引用表上有big增量

我认为这是解决一个小而无聊的调试。

 类似资料:
  • 运行迁移命令时出现错误。 这是管理表模式 另一个是laravel安装附带的用户表。 我想为user_id创建一个外键,但它会出错

  • 使用Laravel 5.3和雄辩模型,试图制作一个用户角色模型。我有2个表用户和角色的主要模式,每个用户都有一个角色,每个角色都有很多用户(一对多的关系)。 当我试图在用户表中创建一个引用角色表中id的外键时,它会给我这个错误 在Connection.php647行: SQLSTATE[HY000]:一般错误:1005无法创建表mydata。#sql-7e0_71(错误号:150“外键约束格式不正

  • 我正在尝试使用artisan创建外键,但出现了此错误。 这是我的迁移: 在批次表中,我使用作为it模型批次。我补充说: 知道如何解决这个错误吗?

  • 我有一个帖子表和一个到达表,它引用了flight no(文本字符串格式)作为外键。然而,当我运行Laravel迁移时,我得到了可怕的错误: SQLSTATE[HY000]:常规错误: 1005不能创建表.(errno: 150"外键约束格式不正确")(SQL:改变表添加约束外键()引用() [PDOExc0019]SQLSTATE[HY000]:常规错误: 1005不能创建表.(errno: 15

  • 我有一个订单表和一个有一个引用作为一个外来的。然而,当我运行Laravel迁移我得到可怕的错误代码: SQLSTATE[HY000]:常规错误: 1005不能创建表.(errno: 150"外键约束格式不正确")(SQL:改变表add约束外键()引用() SQLSTATE[HY000]:常规错误: 1005不能创建表.(errno: 150"外键约束格式不正确") 这是我的表模式: 这是我的sch

  • 表a已成功创建... 错误1215(HY000):无法添加外键约束 无法创建表b