Я пытаюсь использовать заполнители с расширением пролетного пути 1.7.0. Я определил заполнитель в flyway.properties:
flyway.placeholders.schema_name=MYSCHEMA
Мой sql-скрипт выглядит так:
create schema ${schema_name};
При запуске теста пролетного пути я получаю следующую ошибку:
117157 [main] DEBUG com.googlecode.flyway.core.migration.sql.SqlScript - Found statement at line 1: create schema ${schema_name};
117157 [main] DEBUG com.googlecode.flyway.core.migration.sql.SqlStatement - Executing SQL: create schema ${schema_name}
117157 [main] ERROR com.googlecode.flyway.core.migration.DbMigrator - com.googlecode.flyway.core.exception.FlywayException: Error executing statement at line 1: create schema ${schema_name}
117158 [main] ERROR com.googlecode.flyway.core.migration.DbMigrator - Caused by org.hsqldb.HsqlException: Unknown JDBC escape sequence: {: {schema_name}
117158 [main] DEBUG com.googlecode.flyway.core.migration.DbMigrator - Finished migrating to version 1.1 (execution time 00:00.005s)
Похоже, замена заполнителя не работает. Кстати, мой файл flyway.properties успешно загружен (я использую его и для других значений, таких как URL-адрес jdbc).
Кто-нибудь знает, в чем может быть проблема?
EDIT1 Похоже, что метод configure в классе Flyway не вызывается. Надо ли что-то добавлять в контекст приложения?
EDIT2 Одно из найденных нами решений - установить заполнители в контексте приложения:
<bean id="flyway" class="com.googlecode.flyway.core.Flyway"
depends-on="dataSourceRef">
<property name="dataSource" ref="dataSourceRef" />
<property name="placeholders" >
<map>
<entry key="schema_name" value="${flyway.placeholders.schema_name}" />
</map>
</property>
</bean>
Но мы все еще ищем лучшее решение ...