Redmine > 1.4→3.4へバージョンアップ


# Redmine 1.4→3.4へバージョンアップ

環境：Windows

※ 当初1.4→3.4を試したのですが失敗しました。
1.4→2.3→3.4でバージョンアップで成功しました。
以下の方法は3.1→3.4でも同様にバージョンアップ可能でした。

参考（Special Thanks!）
[Bitnami版 Redmine v3\.2\.0をインストールして、v1\.1\.1からデータを移行してみました \- argius note](http://argius.hatenablog.jp/entry/2016/01/03/161417)
[萌えるmel読本の中の人が書くブログ: bitnami redmine 1\.x\->2\.x 移行メモ](https://sproutmel.blogspot.jp/2014/10/bitnami-redmine-1x-2x.html)


# Redmine 1.4→2.x
## Redmine 2.xのインストール

Webには2.xのインストーラーが見つからなかったが、自環境にインストーラーがあったので2.3使った。

無い時はどこからDLしたらよいのだろう。。。
掲示板にも同様に困っている人いるらしい。
[Need installer older Redmine 2\.3\.0\-0 \- Redmine \- Bitnami Community](https://community.bitnami.com/t/need-installer-older-redmine-2-3-0-0/41583/2)

どうやら直リンでDL可能なようだ。
https://downloads.bitnami.com/files/redmine/bitnami-redmine-2.3.0-0-windows-installer.exe32



### 添付ファイルデータ移行
旧環境の 以下フォルダ配下のデータを
\apps\redmine\htdocs\files
\apps\redmine\htdocs\plugins

新環境の同フォルダへコピーする
\apps\redmine\htdocs\files
\apps\redmine\htdocs\plugins



### DBデータ移行
旧環境でmysqldumpでエクスポートしたSQLを、新環境に取り込みます。

#### DBデータをDump

ユーザー・パスワードは、
\apps\redmine\htdocs\config\database.ymlに設定がある。

```
mysqldump -u bitnami --password=xxxxxxx --all-databases  --default-character-set=binary --port=3307 > dump.sql
```
※MySQLを複数使ってる場合にはポート番号も指定する。


以下のようなエラーが出たら、MySQLが複数バージョン入っている場合が想定される。


```shell
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 'OPTION SQL_QUOTE_SHOW_CREATE=1' at line 1 (1064)
```

その場合には明示的にプログラムを指定する

```
C:\BitNamiRedmine\redmine-3.4.3\mysql\bin\mysqldump  -u bitnami --password=xxxxxxx --all-databases  --default-character-set=binary --port=3307 > dump.sql
```


#### 旧環境停止
旧環境は不要の為インスタンスやサービスは止めておく。
manager-windows.exeでStop All

#### 新環境にDBインポート
```
mysql -u bitnami -p bitnami_redmine --password=xxxxxxx --port=3308 < dump.sql
```
※MySQLを複数使ってる場合にはポート番号も指定する。


### 確認
この時点でサイトにアクセス可能かいちおう確認しておいた方がいい。（心の安心）


### マイグレーション

rubyへのパスが通ってなければパスを通す
CMD.exeにて
setx /M PATH "%PATH%;C:\BitNami\redmine-2.3.1-0\ruby\bin"

一度CMD.exeを閉じて再度開く
echo %path%
でパスを確認

カレントフォルダをapps\redmine\htdocsへ移動して以下を実行
```shell-session
bundle exec rake db:migrate RAILS_ENV=production
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
```

CORE_RL_magick_.dll が無いと言われた場合、redmine-2.3.1-0\imagemagick　へのPATHを通して再度実行する。


特にエラーなく完了したら成功。

# Redmine 2.3→3.4

## 最新版のインストール

Redmineの最新版を取得
https://bitnami.com/stack/redmine

執筆時点での最新版は3.4.3
1.4→2.3と同じ作業を行う。


## 添付ファイルデータ移行
旧環境の 以下フォルダ配下のデータを
\apps\redmine\htdocs\files
\apps\redmine\htdocs\plugins

新環境の同フォルダへコピーする
\apps\redmine\htdocs\files
\apps\redmine\htdocs\plugins


## DBデータ移行
旧環境でmysqldumpでエクスポートしたSQLを、新環境に取り込みます。

ユーザー・パスワードは、
\apps\redmine\htdocs\config\database.ymlに設定がある。

### Dumpファイルを作成する
```
mysqldump -u bitnami --password=xxxxxxx --all-databases  --default-character-set=binary --port=3308 > dump.sql
```
※MySQLを複数使ってる場合にはポート番号も指定する。


### 新環境にDBインポート
```
mysql -u bitnami -p bitnami_redmine --password=xxxxxxx --port=3307 < dump.sql
```
※MySQLを複数使ってる場合にはポート番号も指定する。ポート番号は新環境のMySQLのポート番号。

### 確認
インポートが終わったら
この時点でサイトにアクセス可能かいちおう確認しておいた方がいい。（心の安心）

## マイグレーション

### PATH
新環境のRubyとimagemagicへ割当なおす。
echo %path% で確認

###  マイグレーション

カレントフォルダをapps\redmine\htdocsへ移動して以下を実行

```
bundle exec rake db:migrate RAILS_ENV=production
```

エラーが出てしまいました
```js
Mysql2::Error: Table 'queries_roles' already exists: CREATE TABLE `queries_roles` (`query_id` int(11) NOT NULL, `role_id` int(11) NOT NULL) ENGINE=InnoDB
```

### ①テーブル削除
MySqlの実行ファイルへパスを通すか、\mysql\binへカレントフォルダを移動して実行する。
```
mysql -u bitnami --password=xxxxx --port=3307
```
でmysqlへ入り、テーブルを削除
```
USE bitnami_redmine
drop table queries_roles;
```

### ②再度マイグレーションを行う
が、ここでもエラーが出る。
```
bundle exec rake db:migrate RAILS_ENV=production
```

```
Mysql2::Error: Table 'custom_fields_roles' already exists: CREATE TABLE `custom_fields_roles` (`custom_field_id` int(11) NOT NULL, `role_id` int(11) NOT NULL) ENGINE=InnoDB
```

今度はcustom_fields_rolesテーブルを削除
これをエラーがでなくなるまで①と②を繰り返す。 （CMDは2画面でやった方がよい）

### 結果削除したテーブル一覧
* queries_roles
* custom_fields_roles
* email_addresses
* roles_managed_roles
* imports
* import_items
* custom_field_enumerations

※argius note で紹介されていた削除したテーブル一覧とは若干違いました。changeset_parentsを削除しなくてOKでした。


### プラグインのマイグレーション

```
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
```


特にエラーなく完了したら成功。おつかれさまでした。



## Subversionについて

3.4系からSubversionが付かなくなったもよう。
別途インストールする必用があるので以下にメモを残した。

[Bitnami > Redmine > Subversionのインストール - Qiita](https://qiita.com/sugasaki/items/8ca2327baa0c10378816)