2016年5月21日土曜日

Bitnami Redmineの更新でエラー

BitnamiRedmine3.1から3.2へのアップグレードがすんなりいかなかったのでメモ。
3.1→3.2固有の問題とかじゃなく初歩的な話。

現象:
3.1でダンプしたsqlファイルを3.2でリストアした所、Redmineのログイン画面は表示されるがログインするとinternal error500を吐く。おえー
(普通の人はブラウザでエラー500見る前に解決するだろうから現象とは言いづらい)

結果:
migrate時にエラー表示されたデータベーステーブルを3つほど削除してしたら直った。

具体的内容:
過去2回のアップデートをしており自前の手順メモと同じ手順で行ったらだめだった。
とりあえずBitnamiRedmineの公式wikiを覗いたらデータベースを一旦削除して再度作成してリストアするように記されていた。自前のメモに書いてないし、昔はこんな記述なかったような気がする。
多分これだろうとおとなしく記載通りにやってみるが変わらず。なんでやねん。

仕方なく面倒で読み飛ばしていたターミナルのメッセージを一つづつ読んでみると

ruby bin/rake db:migrate RAILS_ENV=production
する際におもいっきりエラーが出ていた。

「Mysql2::Error: Table 'roles_managed_roles' ほげほげじゅげむじゅげむ.....」

とエラーのテーブル名が出ているので、別タブでmysqlに入りテーブルの中身を確認する。

mysql > use bitnami_redmine

でbitnami_redmineに入り、

mysql> select * from roles_managed_roles; 

で確認するとテーブルは空だったので

mysql > drop table roles_managed_roles;

で、テーブルを削除する



元のタブでmigrateを再度行うと、今度は別のテーブルでエラーが出た。
同じようにテーブルの中身を確認して削除する作業をエラーが出なくなるまで繰り返す。
最終的に削除したテーブルが再度作成され、完了となる。

あとはいつも通りプラグイン向けに
bundle install --without development test postgresql sqlite --no-deployment
bundle install --without development test postgresql sqlite --deployment
ruby bin/rake redmine:plugins RAILS_ENV=production
を叩いて、(プラグイン用のテーブルでも同様のエラーが出たのでこちらのテーブルも再構築した)
ruby bin/rake tmp:cache:clear
ruby bin/rake tmp:sessions:clear
して終了

正常にアクセスできた。めでたしめでたし。