外键不匹配 - “password_resets”在 dropColumn 上引用“users”
Posted
技术标签:
【中文标题】外键不匹配 - “password_resets”在 dropColumn 上引用“users”【英文标题】:Foreign key mismatch - "password_resets" referencing "users" on dropColumn 【发布时间】: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,我只能找到与错过迁移相关的此错误,这不是我的情况。
【问题讨论】:
【参考方案1】:你可以先添加这一行:
Schema::disableForeignKeyConstraints();
并在最后添加这一行:
Schema::enableForeignKeyConstraints();
这将禁用您的外键约束。
【讨论】:
好吧,这行得通,但我不认为这是解决这个问题的方法。正如我所说,我的专栏不是 FK 或任何可能有冲突的东西。我也可以尝试从该表中删除任何其他列,但我仍然遇到同样的错误。我会等待另一个答案或解释 你能分享你的表结构和外键映射吗? 不,我不能,它不是一个开源项目。以上是关于外键不匹配 - “password_resets”在 dropColumn 上引用“users”的主要内容,如果未能解决你的问题,请参考以下文章
奇怪的 org.sqlite.SQLiteException: [SQLITE_ERROR] SQL 错误或缺少数据库(外键不匹配 -
通过重置 - 没有路线匹配 [PATCH] "/password_resets.SOLceKJXoax55zSBAfAhTQ"