【发布时间】:2021-02-21 12:43:55
【问题描述】:
有一个基于 Spring 的应用程序使用的数据库。 Flyway 未对数据库进行版本控制。
我已经在spring配置中添加了flyway相关的bean:
<bean id="flywayConfig" class="org.flywaydb.core.api.configuration.ClassicConfiguration">
<property name="dataSource" ref="dataSource"/>
<property name="baselineOnMigrate" value="true" />
<property name="schemas" value="DB2INST1,SRVO"/>
<property name="locations">
<value>classpath:db</value>
</property>
</bean>
<bean id="flyway" class="org.flywaydb.core.Flyway" init-method="migrate">
<constructor-arg ref="flywayConfig"/>
</bean>
我已将用于测试目的的迁移脚本放置在:
src/main/resouces/db/V1.1__create.sql
它在SRVO 模式中创建一个表。
但是在应用启动后我可以看到表格
flyway_schema_history 已创建且仅包含一个条目
installed_rank|version|description |type |script
--------------|-------|---------------------|--------|---------------------
1|1 |<< Flyway Baseline >>|BASELINE|<< Flyway Baseline >>
为什么没有应用脚本?我没有注意到服务器日志中有任何错误。以下是与 Flyway 相关的摘录:
org.flywaydb.core.internal.scanner.classpath.ClassPathScanner - Scanning for classes at classpath:db
org.flywaydb.core.internal.database.DatabaseFactory - Database: jdbc:db2://localhost:50000/SRVO (DB2/LINUXX8664 11.5)
org.flywaydb.core.internal.database.DatabaseFactory - Driver : IBM Data Server Driver for JDBC and SQLJ 4.13.127
org.flywaydb.core.Flyway - DDL Transactions Supported: true
org.flywaydb.core.Flyway - Schemas: DB2INST1,SRVO
org.flywaydb.core.Flyway - Default schema: null
org.flywaydb.core.internal.callback.SqlScriptCallbackFactory - Scanning for SQL callbacks ...
org.flywaydb.core.internal.command.DbValidate - Validating migrations ...
org.flywaydb.core.internal.command.DbValidate - Successfully validated 1 migration (execution time 00:00.012s)
org.flywaydb.core.internal.command.DbMigrate - Current version of schema "DB2INST1": 1
org.flywaydb.core.internal.command.DbMigrate - Schema "DB2INST1" is up to date. No migration necessary.
【问题讨论】:
-
那些脚本不应该在
src/main/resources/db/migration吗? -
@sp00m 如果我明确指定路径,他们为什么要这样做?
-
见flywaydb.org/documentation/concepts/migrations#discovery 和flywaydb.org/documentation/configuration/parameters/… - 你的
resouces缺少r- 也许只是一个小错字?在你上面写的或者你手动创建的目录中? -
也值得使用一致的格式:
<property name="locations" value="classpath:db" /> -
我在这里找到了答案stackoverflow.com/a/57075714/971355 不确定我是否必须删除问题。当我问它时,我没想到原因会如此出乎意料。无论如何,感谢您指出位置问题。