You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel迁移回滚报错:competition_id列不存在,求排查方案

Laravel迁移回滚报错解决方法

你的问题出在没有先删除依赖competition_id的索引和外键约束,直接执行删列操作导致MySQL报错。

在up()方法中,你给competition_id添加了两个约束:

  1. 关联competitions表的外键约束
  2. 由account_id和competition_id组成的联合唯一索引

MySQL要求必须先删除依赖该列的所有约束,才能删除列本身,否则会触发语法错误。

修正后的down()方法代码如下:

public function down(): void
{
    Schema::table('posts', function (Blueprint $table) {
        // 先删除联合唯一索引
        $table->dropUnique(['account_id', 'competition_id']);
        // 再删除外键约束(Laravel自动生成的外键名规则:表名_列名_foreign)
        $table->dropForeign('posts_competition_id_foreign');
        // 最后删除列
        $table->dropColumn('competition_id');
    });
}

重新执行php artisan migrate:rollback即可完成回滚操作。

内容的提问来源于stack exchange,提问作者nufo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 14:22:01