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

Bitnami Redmine数据库迁移遇重复表/列,如何跳至指定版本?

解决Redmine数据库迁移“列或表已存在”并跳至指定版本的方案

1. 确认迁移状态

首先执行命令查看所有迁移任务的当前状态,区分哪些是标记为待执行(down)但实际已在数据库中存在的版本:

rake db:migrate:status RAILS_ENV=production

输出会列出所有迁移文件的版本号和状态,示例如下:

down  20210315082345  Add custom field to issues
   up    20210420121000  Create projects table

标记为down但执行时提示“列或表已存在”的版本,就是需要手动标记为已完成的目标。

2. 直接标记迁移为已完成

如果确认这些down状态的迁移实际已经执行(表/列已存在),可以直接将版本号写入schema_migrations表,跳过重复执行:

  • 登录Redmine对应的数据库(Bitnami默认多为MySQL或PostgreSQL),执行SQL语句:
INSERT INTO schema_migrations (version) VALUES ('20210315082345'), ('其他需要标记的版本号');

替换对应的版本号即可批量标记完成。

3. 跳转到指定版本的迁移命令

如果需要将数据库直接迁移到某一特定版本(而非全部完成),可使用以下命令:

rake db:migrate VERSION=目标版本号 RAILS_ENV=production

该命令会自动执行所有未完成的迁移直到指定版本,若目标版本之前的迁移已实际执行(表/列存在),需先按步骤2标记为已完成,避免重复报错。

注意事项

  • 操作前务必备份数据库,防止数据丢失;
  • 切换到Bitnami Redmine的安装目录(如/opt/bitnami/redmine)执行命令,必要时使用sudo获取权限;
  • 若不确定哪些迁移已实际执行,可对比数据库表结构与迁移文件的内容,确认后再标记。

内容的提问来源于stack exchange,提问作者Timoteo Ribeiro de Melo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 03:25:16