データベーススキーマバージョンの管理にflywayを使用していますが、問題に直面しています。私たちはチームとして働いており、ソースコード管理としてgitを使用しているため、異なる人が自分のローカルリポジトリでデータベーススキーマを更新する場合があります。それが起こった場合、我々は取得します
データベースに適用されない解決済みの移行を検出:2016.03.17.16.46 "
「2016.03.17.16.46」という時刻が別の人によって追加されたため、その時刻よりも後のタイムスタンプをすでに適用しています。その場合は、すべてのデータベーステーブルをクリーンアップして、再度作成する必要があります。 validateOnMigrate
にfalseを設定しようとして、 flywayClean
を実行しましたが、何も役に立ちません。それを変更する別の方法はありますか?
outOfOrder
はあなたの友達です。これらの移行を事後に挿入できるようにするには、trueに設定します。
あるgitブランチから別のgitブランチに切り替えるときに同様の問題に直面し、flyway:migrate
。たとえば、ブランチ 'release_4.6.0'にいるとき、ブランチ 'release_4.7.0'からローカルマシンに移行していないので、次のエラーFlywayException: Validate failed: Detected applied migration not resolved locally
。私のために働いた解決策は、ignoreMissingMigrations
flywayオプションをtrueに設定することです。 Mavenでは次のようになります
flyway:migrate -Dflyway.ignoreMissingMigrations=true
たぶんそれはこの質問に対する答えではないかもしれませんが、私と同じ問題に直面した人たちにとっては役立ちます。
ここで詳細を見つけることができます: https://flywaydb.org/documentation/commandline/migrate#ignoreMissingMigrations
..または、単にflyway_schema_history
テーブルとbootrun
もう一度。
SQLシーケンスがすべてi等であることを確認してください。
次に、次の起動時に、次のようなログの行が表示されます。
o.f.c.i.s.DefaultSqlScriptExecutor : DB: relation "transaction_attempt" already exists, skipping (SQL State: 42P07 - Error Code: 0)
o.f.c.i.s.DefaultSqlScriptExecutor : DB: relation "provider" already exists, skipping (SQL State: 42P07 - Error Code: 0)
本番環境でデータをダンプすることを忘れないでください。
注文のせいかもしれません
application.propertiesに追加します
flyway.out-of-order = true
または春のapplication.yml
flyway:
out-of-order: true