Posted at

redmine pluginでmigrationエラー、pluginのmigrate管理はどうなっている?

plugin名を変更した後、migrationをやっていこうとしたとき以下のエラーを検出。

$ rake redmine:plugins:migrate

== 1 CreatePositions: migrating ===============================================
-- create_table(:positions)
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

SQLite3::SQLException: table "positions" already exists: CREATE TABLE …

やろうとしたことは、既存のmodelを削除して新しいmodelを追加することだったのだが、一個目のmigrationファイルがもう一回実行されたことで、create tableがもう一回走った模様。

migrationは対象のデータベースのschema_migrationsテーブルで管理されているのだが、pluginはどう管理されているか確認してみた。それが以下の通り(どのmigrationを通したかを残す1カラムの表でした)。

[連番]-[plugin名]

なるほど、plugin名を変えるとここが合わなくなるのね。早めに気づけて良かった。

sqlでupdateすることで、うまくmigrationが通りました。