2

create table DDL を使用して v1 移行を正常に実行しました。同じものをv2ファイルにコピーして実行しました-予想される検証エラーメッセージが表示されました:

バージョン 1.0.002 への移行 com.googlecode.flyway.core.exception.FlywayException: 行 1 でステートメントを実行中にエラーが発生しました: create table people(id number(10) primary key, name varchar2(301)) が原因で発生しました java.sql.SQLSyntaxErrorException : ORA-00955: name は既存のオブジェクトによってすでに使用されています Mig​​rationException: バージョン 1.0.002 への移行に失敗しました! バックアップを復元し、データベースとコードをロールバックしてください

v2 ファイルを修正し、flyway migrate を再度実行しました。エラーメッセージを返す

現在のスキーマ バージョン: 1.0.002 MigrationException: バージョン 1.0.002 への移行に失敗しました! バックアップを復元し、データベースとコードをロールバックしてください

私はデータベースのバックアップを取る段階ではありません - 単純に修正された DDL を実行しようとしています。私は現在、フライウェイクリーン以外の解決策を見ていません。Flyway が FAILED バージョンを再度実行できないのはなぜですか (チェックサムが変更された場合)。または、フライウェイのロールバック コマンドが必要ではありませんか?

そのようにコードを変更できることはわかっていますが、このように動作するように選択した理由はありますか?

4

1 に答える 1

2

単純に再実行する場合の問題は、いくつかの変更が既に適用されている可能性があり、移行が失敗する原因となることです。

これには 2 つの解決策があります。

  • PostgreSQL、SQLServer、DB2 などのDDL トランザクションをサポートするデータベースを使用する
  • 再適用する前に、変更された構造とメタデータ テーブルの手動クリーンアップを実行します。
于 2011-08-20T07:37:46.903 に答える