从其他项目中移回问题

时间:2013-10-30 14:25:24

标签: redmine redmine-plugins

我需要你的支持。

我的redmine中有一个很大的项目,里面有很多子项目。 错误地将300多个问题从这个项目转移到另一个子项目。我没有机会直接从redmine手中拯救它。但我有一个数据库转储,这是在此次事故之前完成的。 所以,我的问题是 - 我可以将正确数据库中的表“问题”与损坏的数据库进行比较并将问题移回去吗?或者可能有任何工具或方法将问题移回正确的项目? Redmine版本是2.0.4。数据库:PostgreSQL。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

计划a: 您可以尝试分析表issues并找出所有错误移动的问题。 您知道新的project_id,并且您知道大致的更改时间戳。并编写sql查询(或使用rails console)撤消操作。 例如(代码未测试!)

new_project_id = Project.find(ID).id # note that ID is project identificator not id of record!
timestamp = DateTime.parse('2013-10-30 12:20:45')
issues = Issue.where(project_id: new_project_id).where('updated_at > ? AND updated_at < ?', timestamp - 1.minute, timestamp + 1.minute)
# check that all selected issues must be updated!!!
issues.update_all(project_id: old_project_id) # note that old_project_id is correct id (integer value) of record in DB

计划b: 你可以找到所有在正确的DB中有project_id的issue_id。然后应用SQL查询来更新项目ID以更正损坏的数据库上的所有问题where id IN (issue_ids)

# load correct DATABASE and start rails console
project = Project.find(OLD_ID) # note that OLD_ID is project identificator not id of record!
issue_ids = project.issue_ids
# save somewhere issue_ids
# load corrupted database and start rails console
issue_ids = [saved_array_of_ids_from_previous_step]
Issue.where(id: issue_ids).update_all(project_id: correct_project_id) # note that correct_project_id is correct id (integer value) of record in DB