web-dev-qa-db-ja.com

フライウェイ上のデータベースに適用されない、検出された解決済みの移行

データベーススキーマバージョンの管理にflywayを使用していますが、問題に直面しています。私たちはチームとして働いており、ソースコード管理としてgitを使用しているため、異なる人が自分のローカルリポジトリでデータベーススキーマを更新する場合があります。それが起こった場合、我々は取得します

データベースに適用されない解決済みの移行を検出:2016.03.17.16.46 "

「2016.03.17.16.46」という時刻が別の人によって追加されたため、その時刻よりも後のタイムスタンプをすでに適用しています。その場合は、すべてのデータベーステーブルをクリーンアップして、再度作成する必要があります。 validateOnMigrateにfalseを設定しようとして、 flywayClean を実行しましたが、何も役に立ちません。それを変更する別の方法はありますか?

27
Zhao Yi

outOfOrderはあなたの友達です。これらの移行を事後に挿入できるようにするには、trueに設定します。

36
Axel Fontaine

ある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

5
Alex

..または、単に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)

本番環境でデータをダンプすることを忘れないでください。

0
WesternGun

注文のせいかもしれません

application.propertiesに追加します

flyway.out-of-order = true

または春のapplication.yml

flyway:
  out-of-order: true