5

サーバーの複数 (6 程度) のインスタンスで Flyway 移行を実行しようとしています。flyway:migrate各サーバーは、Bamboo を使用して Git から自動的にビルドおよびデプロイされるため、 Maven ゴールを使用できるようにして、各サーバーが次にデプロイされたときに自動的に移行されるようにしたいと考えています。

ただし、私は今 Flyway を試しているところなので、既存の DB はどれもinit'd' されていません。私は、Flywayがまだinitそうでない場合はMavenでどうにかして指定することは可能migrateでしょうか?

移行ドキュメントでは、 「メタデータ テーブルが存在しない場合、Flyway は自動的にメタデータ テーブルを作成します」と示唆していますが、実際には、flyway:migrate目標が実行されるとエラーが発生します。

プロジェクト mutopia-server で目標 com.googlecode.flyway:flyway-maven-plugin:2.2:migrate (デフォルト) を実行できませんでした: Flyway エラー: com.googlecode.flyway.core.api.FlywayException: 空でないスキーマが見つかりました "public " メタデータ テーブルなし! 最初に init() を使用して、メタデータ テーブルを初期化します。→【ヘルプ1】

4

2 に答える 2

12

SpringでAPIバージョンを使用するように切り替えたため、Mavenではわかりませんでした(すべての点で優れているようです)。

最初は同じ問題がありましたinit-method="migrate"。Bean は空でないスキーマで失敗し、init最初に呼び出す必要がありました。しかし、Flyway Bean のソースを見ると、initOnMigratetrue に設定するだけでよいことに気付きました。これがドキュメントにない理由はわかりません。豆をあまりいじらない人にとっては、自明ではありません。

とにかく、Flyway が不平を言っている空でないスキーマもある場合、Bean は次のapplicationContext.xmlようになります。

<bean id="flyway" class="com.googlecode.flyway.core.Flyway" init-method="migrate">
  <property name="dataSource" ref="dataSource" />
  <property name="initOnMigrate" value="true" />
</bean>
于 2013-07-23T07:41:31.183 に答える