使用Vapor部署Laravel失败报重复bio字段错误 无Vapor权限如何解决
Vapor部署Laravel migrate重复列名报错解决方案
部署钩子执行失败
钩子命令:migrate --force
报错内容:Column already exists: 1060 Duplicate column name 'bio'
日志提示:可执行hook:log 1178007查看完整日志
以下方案均无需Vapor后台访问权限,仅需修改项目代码后重新提交触发部署即可生效:
- 新增字段存在性判断
调整新增bio字段的迁移文件,调用Laravel自带的hasColumn方法做前置校验,字段已存在时自动跳过新增逻辑,示例代码:if (!Schema::hasColumn('你的表名', 'bio')) { Schema::table('你的表名', function (Blueprint $table) { $table->text('bio')->nullable(); // 对应你原本的字段属性 }); } - 清理重复迁移文件
检查database/migrations目录,确认是否存在多个新增bio字段的迁移脚本,删除重复的、未执行过的迁移文件,避免同字段新增逻辑被多次触发。 - 空实现已生效迁移
如果确认数据库中bio字段的属性已经完全符合预期,可直接把对应迁移文件的up方法内容清空,迁移执行时无操作即可避免报错。 - 临时跳过migrate部署钩子
如果本次部署不需要执行新的迁移,可修改项目根目录的vapor.yml配置,注释掉migrate --force对应的部署钩子规则,先完成代码部署,后续拿到数据库操作权限后再手动执行迁移命令。
内容的提问来源于stack exchange,提问作者NohaMahgoub
相关产品推荐
相关产品推荐

