Redmineをver2.xからver3.xへマイグレするためMySQLのDB restoreをやってみたが結論としてはがDBスキーマ不良で失敗だったの記録@20150623

Redmineをver2.xからver3.xへマイグレするためMySQLのDB restoreをやってみたが結論としてはがDBスキーマ不良で失敗だったの記録@20150623

### マイグレ（INSTALL_DIR）は

元）redmine-2.6.1-0<br>
先）redmine-3.0.3-0

### 参考としたサイトは以下

http://satsumahomeserver.com/blog/3612<br>
http://chunye.seesaa.net/article/418976383.html


### 最初に環境変数を変更

<p class="alert">RubyのbundleはPATHがないと直ぐにエラー返し・・・、なので環境変数を最初に確認し変更。</p>

（PATH通す必要性、環境変数って前近代的と思うけど・・・、どうなんだろう？、今でもLinuxもしっかり必要で。大昔の遺物（DOSレベル）？
・・・、はさておき）


システム環境に3.0台のRubyのpathを追加（redmine-2.6.1-0のPathは既にある前提）<br>
;C:\BitNami\redmine-3.0.3-0\ruby\bin ;C:\BitNami\redmine-3.0.3-0\imagemagick

### MySQLのDBをRestore

<p class="info">まずマイグレ元のRedminieでSQLのバックアップファイルを作成。<br>マイグレ先のRedmine-3.0.3のmysqlに移動して、バックアップしたSQLファイルを指定しRestore</p>

念のため3.0.3-0のSQLも事前バックアップしておいて、<br>
cd C:\BitNami\redmine-3.0.3-0\mysql\bin<br>
mysqldump -u root -P 9306 -B bitnami_redmine -p >backup.sql

まずDBの取り込み実行<br>
バックアップ（吐き出し）とは逆向きの　”<”　が単純明快

mysql -u root -P 9306 -B bitnami_redmine -p<C:\BitNami\redmine-2.6.1-0\mysql\bin\backup.sql

次にDBのマイグレを実行<br>
cd C:\BitNami\redmine-3.0.3-0\apps\redmine\htdocs

bundle exec rake db:migrate RAILS_ENV=<span class="str">'production'</span>
bundle exec rake db:migrate RAILS_ENV=production
rake db:migrate RAILS_ENV=production

OKでず不発???

port番号が正しいか確認<br>
C:\Bitnami\redmine-3.0.3-0\apps\redmine\htdocs\config
database.yml
port: 3306

redmine-3.0.3-0は9306でなく3306だった、失礼・・・<br>

再度DBマイグレを実行<br>
mysql -u root -P 3306 -B bitnami_redmine -p<C:\BitNami\redmine-2.6.1-0\mysql\bin\backup.sql

OK

おーOKで通った。

C:\Bitnami\redmine-3.0.3-0\apps\redmine\htdocs\files<br>
2015 folder copy

bundle exec rake tmp:cache:clear<br>
bundle exec rake tmp:sessions:clear

とcacheをクリアしてDBのRestoreは終わり

### DB RestoreはOKだがRedmineは動作不良

終わってRedmineに戻ると新しいチケット作成でトラッカーの不整合が起き2.0で作成されたトラッカーが削除できず、かつ3.0で新しいチケット作成できず。単に2.0で作成した過去チケットを見るだけ、のRedmineになってしまった。

ググると3.0ではDB スキーマの違いありで、単なるDB Restore では無理の様子。<br>
従い、SQLDBを直接いじってテーブル構成修正をトライ・・・でMySQLコマンドで確認した経緯を以下記録

### MySQLのDB操作
---

### bitnami-redmineのMySQL にコマンドラインから接続してみる

mysql -u ユーザー名 -D データベース名 -p

C:\BitNami\redmine-2.6.1-0\mysql\bin>mysql -u root -D bitnami_redmine -p

Enter password: ***********

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 4.1.19 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

でMySQLへ接続できた。<br>
まずはどんなDBがあるか確認

mysql>
mysql> show DATABASES;<br>
![clipboard.jpg](https://qiita-image-store.s3.amazonaws.com/0/97381/c2e91e26-c5f5-2094-1d68-7567e7e71d6f.jpeg)
5 rows in set (0.00 sec)

bitnami_redmineのDBがあるのが確認できたので、そのテーブル種類を確認

mysql> show tables;<br>
![clipboard_2.jpg](https://qiita-image-store.s3.amazonaws.com/0/97381/e83c1cf5-bba3-7892-2d95-6d410451a540.jpeg)
51 rows in set (0.00 sec)

トラッカーの不整合が問題なのでTracker Tableを確認
2Byte文字化けだが6個のトラッカーが確認できる。

mysql> select * from trackers;<br>
![clipboard_3.jpg](https://qiita-image-store.s3.amazonaws.com/0/97381/d900e4a6-5ae9-99d9-5c38-c8ca83184a20.jpeg)
5 rows in set (0.00 sec)

合わせてトラッカーのIndexｍを確認

mysql> show index from trackers;<br>
![clipboard_4.jpg](https://qiita-image-store.s3.amazonaws.com/0/97381/6062ad0f-1261-4e6b-eff3-9b3ac88e0b04.jpeg)
1 row in set (0.11 sec)

トラッカーのカラムタイプを確認

mysql> show columns from trackers;<br>
![clipboard_5.jpg](https://qiita-image-store.s3.amazonaws.com/0/97381/d35f200b-f11c-053c-86b2-3c791492f1d4.jpeg)!
6 rows in set (0.01 sec)

mysql> show columns from issue_statuses;<br>
![clipboard_6.jpg](https://qiita-image-store.s3.amazonaws.com/0/97381/68fb4fba-2304-ca81-47c7-3c8e390a01ac.jpeg)
6 rows in set (0.11 sec)

mysql> select * from issue_statuses;<br>
![clipboard_7.jpg](https://qiita-image-store.s3.amazonaws.com/0/97381/e55a1eed-8f85-0405-2f8c-143fef40cd3d.jpeg)
6 rows in set (0.01 sec)

mysql> \q<br>
Bye

で、これをredmine-3.0.3-0のMySQLと比較して・・・<br>
だがここで挫折し、結局マイグレは失敗となった。