【问题标题】:Foreign key mismatch - "password_resets" referencing "users" on dropColumn外键不匹配 - “password_resets”在 dropColumn 上引用“users”
【发布时间】:2020-08-14 15:43:09
【问题描述】:

我正在尝试通过迁移在“用户”表上删除一列(我们称之为 fooboo),但我遇到了下一个错误:

一般错误:1 个外键不匹配 - “password_resets”引用“users”(SQL:INSERT INTO users (id, name, email, password, fooboo, created_at, updated_at) SELECT id, name, email, password, fooboo, created_at, updated_at FROM __temp__users)

迁移类中的up()函数:


    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->dropColumn('fooboo');
        });
    }

此列尤其没有任何索引、FK 或任何可能造成冲突的东西。它只是一个布尔值,默认值为FALSE

我在运行我的单元测试 (phpunit) 时遇到了这个错误。我无法仅删除创建它的迁移类上的列来解决此问题,我需要一个新的迁移才能在生产服务器上运行。

询问我们的朋友 google,我只能找到与错过迁移相关的此错误,这不是我的情况。

【问题讨论】:

    标签: laravel sqlite laravel-5 phpunit


    【解决方案1】:

    你可以先添加这一行:

    Schema::disableForeignKeyConstraints();
    

    并在最后添加这一行:

    Schema::enableForeignKeyConstraints();
    

    这将禁用您的外键约束。

    【讨论】:

    • 好吧,这行得通,但我不认为这是解决这个问题的方法。正如我所说,我的专栏不是 FK 或任何可能有冲突的东西。我也可以尝试从该表中删除任何其他列,但我仍然遇到同样的错误。我会等待另一个答案或解释
    • 你能分享你的表结构和外键映射吗?
    • 不,我不能,它不是一个开源项目。
    猜你喜欢
    • 1970-01-01
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    相关资源
    最近更新 更多