25

私はフライウェイを構成して完全に理解する過程にあり、この状況に陥りました:

  • flyway で動作するように新しいプロジェクトを正常に構成しました。
  • テスト データベースをバージョン 0 から 1.0.3 に正常に移行しました。
  • バージョン 1.0.4 への移行の実行に失敗しました。(すでに存在する列を追加しようとしていましたが、これまでのところ問題はありませんでした。悪いです。)

ただし、対応するスクリプトに必要な変更を加えて動作させると、flyway は次のメッセージを表示し続けました。

 Current schema version: 1.0.4
 com.googlecode.flyway.core.migration.MigrationException: Migration to version 1.0.4 failed! Please restore backups and roll back database and code!

完全なダンプを復元してすべての移行を再度適用したくなかったので、alter table スクリプトを機能させるためだけに、「schema_version」テーブルにいくつかの変更を加えました。

  • 1st バージョン 1.0.4 のエントリを消去しました
  • 2番目に、バージョン1.0.3の「current_version」フィールドを1に設定しました
  • そして、再度 flyway:migrate コマンドを実行しました

この後、移行が最終的に適用され、成功メッセージが表示されましたが、これがこのような状況に対処するための正しいアプローチであるかどうかはよくわかりません. 「schema_version」テーブルを自分で変更する権利があるかどうかはわかりません。フライウェイ自体によってのみ変更する必要があると思うからです。

それで、私に何が起こったのかを説明した後、私の質問は次のようになります。

自分で「schema_version」テーブルを変更せずに、フライウェイで失敗した移行を適用するために「再試行」する方法はありますか?

このタスクを実行するために私が知らないコマンドはありますか?

4

3 に答える 3

13

これは FAQ で回答されています: http://flywaydb.org/documentation/faq.html#repair

今後の Flyway 2.0 には修復コマンドが含まれます。このコードは既に SCM にチェックインされています。

注: これは Flyway のメタデータ テーブルのみを扱います。失敗した移行のその他の影響をクリーンアップする責任は引き続きあります。

更新: Flyway 2.0 がリリースされました。http://flywaydb.orgで取得できます。

于 2012-08-13T08:26:58.757 に答える