Unfoあなたのアプリケーションにスキーマが存在することを予期する単一のデータソースがある場合、Flywayはそのデータソースを使用してスキームを作成することができません。スキーマにバインドされていない別のデータソースを作成し、FlywayMigrationStrategyを使用して無制限のデータソースを使用する必要があります。あなたの特性で
をファイル:
@Bean
@Primary
@ConfigurationProperties("spring.datasource")
public DataSourceProperties primaryDataSourceProperties() {
return new DataSourceProperties();
}
@Bean
@Primary
@ConfigurationProperties("spring.datasource")
public DataSource primaryDataSource() {
return primaryDataSourceProperties().initializeDataSourceBuilder().build();
}
@Bean
@ConfigurationProperties("spring.bootstrapDatasource")
public DataSource bootstrapDataSource() {
return DataSourceBuilder.create().build();
}
そして、あなたのFlywayMigrationStrategyファイル内:configファイルで
spring:
datasource:
url: jdbc:mysql://localhost:3306/myschema
bootstrapDatasource:
url: jdbc:mysql://localhost:3306
@Inject
@Qualifier("bootstrapDataSource")
public void setBootstrapDataSource(DataSource bootstrapDataSource) {
this.bootstrapDataSource = bootstrapDataSource;
}
@Override
public void migrate(Flyway flyway) {
flyway.setDataSource(bootstrapDataSource);
...
flyway.migrate()
}
あなたは[この一部]に行っている(HTTPS ://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html#howto-execute-flyway-database-migrations-on-startup)oドキュメンテーション? –
はい。そして、私の質問はまだ立っていると思います。スキーマを作成し、アプリケーションの起動時にマイグレーションを行う方法を知りたい。 –
自分でフライウェイを使用しませんでしたが、空のデータベースが見つかった場合に移行がスキーマ自体を作成しませんか?とにかく、私が投稿したドキュメンテーションから、Springバッチの選択肢もあります。これはあなたが望むものを正確に実行します(初期化時にSQLスクリプトを実行します)。しかし、フライウェイにすべてをやってもらうのは良いことです。あなたは今行っている設定であなたの質問を編集できますか? –