2

Bugzilla のインストールを redmine に移行中です。

Bugzilla では、バグは常に、問題が発生する原因となったソフトウェアのバージョンに対して記録されていました。

redmine はロードマップをサポートしているので、移行のためにいくつかのことをしたいと思います。最初にやりたいことは、現在のバージョン設定をすべて新しいカスタム「ソース バージョン」フィールドに移動することです。

「ソース バージョン」と呼ばれる新しいカスタム フィールドを作成し、そのフィールドを使用するようにいくつかのバグ レポートを手動で変更してみました。一部の限定的なテストでは、そのフィールドに指定された各値がテーブルに新しいエントリを取得することが示唆されていcustom_valuesます。以下は 3 つのバグを示しており、そのうちの 2 つは同じカスタム バージョン値 1.2060 を持っていました。

--------------
SELECT * FROM custom_values WHERE custom_field_id=4
--------------

+------+-----------------+---------------+-----------------+--------+
| id   | customized_type | customized_id | custom_field_id | value  |
+------+-----------------+---------------+-----------------+--------+
| 4821 | Issue           |           765 |               4 | 1.1098 |
| 4822 | Issue           |           802 |               4 | 1.2060 |
| 4823 | Issue           |           801 |               4 | 1.2060 |
+------+-----------------+---------------+-----------------+--------+

...ここで、custom_field_id は、追加した新しい「ソース バージョン」フィールドに関連しています。

したがって、現在のバージョンからコピーする必要があるすべての問題に対して新しいエントリを作成する必要があるテーブルにデータを入力する必要があると思います。

それが役立つ場合、バージョン テーブルには次の構造があります。

--------------
SHOW COLUMNS FROM versions
--------------

+-----------------+--------------+------+-----+---------+----------------+
| Field           | Type         | Null | Key | Default | Extra          |
+-----------------+--------------+------+-----+---------+----------------+
| id              | int(11)      | NO   | PRI | NULL    | auto_increment |
| project_id      | int(11)      | NO   | MUL | 0       |                |
| name            | varchar(255) | NO   |     |         |                |
| description     | varchar(255) | YES  |     |         |                |
| effective_date  | date         | YES  |     | NULL    |                |
| created_on      | datetime     | YES  |     | NULL    |                |
| updated_on      | datetime     | YES  |     | NULL    |                |
| wiki_page_title | varchar(255) | YES  |     | NULL    |                |
| status          | varchar(255) | YES  |     | open    |                |
| sharing         | varchar(255) | NO   | MUL | none    |                |
+-----------------+--------------+------+-----+---------+----------------+

...そして課題テーブルには次の構造があります。

--------------
SHOW COLUMNS FROM issues
--------------

+------------------+--------------+------+-----+---------+----------------+
| Field            | Type         | Null | Key | Default | Extra          |
+------------------+--------------+------+-----+---------+----------------+
| id               | int(11)      | NO   | PRI | NULL    | auto_increment |
| tracker_id       | int(11)      | NO   | MUL | 0       |                |
| project_id       | int(11)      | NO   | MUL | 0       |                |
| subject          | varchar(255) | NO   |     |         |                |
| description      | text         | YES  |     | NULL    |                |
| due_date         | date         | YES  |     | NULL    |                |
| category_id      | int(11)      | YES  | MUL | NULL    |                |
| status_id        | int(11)      | NO   | MUL | 0       |                |
| assigned_to_id   | int(11)      | YES  | MUL | NULL    |                |
| priority_id      | int(11)      | NO   | MUL | 0       |                |
| fixed_version_id | int(11)      | YES  | MUL | NULL    |                |
| author_id        | int(11)      | NO   | MUL | 0       |                |
| lock_version     | int(11)      | NO   |     | 0       |                |
| created_on       | datetime     | YES  | MUL | NULL    |                |
| updated_on       | datetime     | YES  |     | NULL    |                |
| start_date       | date         | YES  |     | NULL    |                |
| done_ratio       | int(11)      | NO   |     | 0       |                |
| estimated_hours  | float        | YES  |     | NULL    |                |
| parent_id        | int(11)      | YES  |     | NULL    |                |
| root_id          | int(11)      | YES  | MUL | NULL    |                |
| lft              | int(11)      | YES  |     | NULL    |                |
| rgt              | int(11)      | YES  |     | NULL    |                |
| is_private       | tinyint(1)   | NO   |     | 0       |                |
+------------------+--------------+------+-----+---------+----------------+

問題は、バージョンを新しいフィールドにコピーしてクリーンアップするために、どのような魔法の SQL クエリを実行する必要があるかということです。私はSQLの達人ではありませんでしたので、どんな助けも感謝して受け取ります!

編集- 私は次のことを試しました:

INSERT INTO custom_values
(Issue, issues.id, 4, versions.name)
SELECT * FROM issues INNER JOIN versions ON issues.fixed_version_id=versions.id;

...しかし、それは私にエラーを与えます:

--------------
INSERT INTO custom_values (Issue, issues.id, 4, versions.name) SELECT * FROM issues INNER JOIN versions ON issues.fixed_version_id=versions.id
--------------

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '4, versions.name) SELECT * FROM issues INNER JOIN versions ON issues.fixed_version_id=ve' at line 1
4

1 に答える 1

1

クエリ

INSERT INTO custom_values
(Issue, issues.id, 4, versions.name)
SELECT * FROM issues INNER JOIN versions ON issues.fixed_version_id=versions.id;

これに変更する必要があります

INSERT INTO custom_values
(customized_type, customized_id, custom_field_id, value)
SELECT 'Issue', issues.id, 4, versions.name
FROM issues INNER JOIN versions ON issues.fixed_version_id=versions.id;

有効なSQLにするために。

しかし、とにかくデータベースをバックアップします... :-)

于 2012-07-16T22:26:49.430 に答える