1

あなたの親切なサポートが必要です。

Redmine に大きなプロジェクトがあり、その中に多くのサブプロジェクトがあります。300 以上の問題が、誤ってこのプロジェクトから別のサブプロジェクトに移動されました。そして、redmine から直接手で救出する機会がありません。しかし、この事故の前に行われたデータベース ダンプがあります。だから、私の質問は - 正しいデータベースのテーブル「問題」を損傷したデータベースと比較して、問題を元に戻すことはできますか? または、問題を適切なプロジェクトに戻すためのツールや方法があるでしょうか? Redmine のバージョンは 2.0.4 です。データベース: PostgreSQL。

前もって感謝します。

4

1 に答える 1

0

プラン a: テーブルを分析しissuesて、間違って動いているすべての問題を見つけることができます。あなたは新しい project_id を知っており、変更のおおよそのタイムスタンプを知っています。そして、アクションを元に戻すためにSQLクエリを記述します(またはRailsコンソールを使用します)。例(コードはテストされていません!)

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 を見つけることができます。where id IN (issue_ids) 次に、SQL クエリを適用してプロジェクト ID を更新し、破損した DBのすべての問題の値を修正します。

# 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
于 2013-10-30T14:56:49.847 に答える