java - 为什么 flyway 忽略了我的 SQL 迁移文件?

标签 java gradle flyway

我们在基于 java、gradle spring 的 MVC 应用程序中使用 flyway。我将我的 SQL 文件保存在 src/main/resources/db/migration 文件夹中。

下面是我的 flyway gradle 配置文件。

apply plugin: "org.flywaydb.flyway"

flyway {
    driver = 'com.mysql.jdbc.Driver'
    url = "jdbc:mysql://localhost:3306/java_app_test"
    user = 'root'
    password = ''
    schemas = ['java_app_test']
    outOfOrder = true
    locations = [
            //"filesystem:${project.projectDir}/dbScripts/migrations"
            "classpath:db/migration"
    ]
}

当我运行 gradle flywayBaseline 时,我得到如下输出。

13:57:06.291 [DEBUG] [org.flywaydb.core.internal.util.scanner.classpath.ClassPathScanner] Found resource: db/migration/20160121042238016__initial.sql
13:57:06.292 [DEBUG] [org.flywaydb.core.internal.util.scanner.classpath.ClassPathScanner] Found resource: db/migration/20160122081606826__initial.sql
13:57:06.311 [DEBUG] [org.flywaydb.core.internal.command.DbSchemas] Schema `java_app_test` already exists. Skipping schema creation.
13:57:06.358 [DEBUG] [org.flywaydb.core.internal.metadatatable.MetaDataTableImpl] MetaData table `java_app_test`.`schema_version` successfully updated to reflect changes
13:57:06.422 [INFO] [org.flywaydb.core.internal.command.DbBaseline] Schema baselined with version: 1

它找到了我的 sql 文件,但没有执行它。

当我运行 flywayMigrate 时,我得到以下输出

14:12:41.285 [DEBUG] [org.flywaydb.core.internal.util.scanner.classpath.ClassPathScanner] Filtering out resource: db/migration/20160121042238016__initial.sql (filename: 20160121042238016__initial.sql)
14:12:41.285 [DEBUG] [org.flywaydb.core.internal.util.scanner.classpath.ClassPathScanner] Filtering out resource: db/migration/20160122081606826__initial.sql (filename: 20160122081606826__initial.sql)
14:12:41.314 [INFO] [org.flywaydb.core.internal.command.DbValidate] Validated 1 migration (execution time 00:00.047s)
14:12:41.335 [DEBUG] [org.flywaydb.core.internal.command.DbSchemas] Schema `java_app_test` already exists. Skipping schema creation.
14:12:41.351 [DEBUG] [org.flywaydb.core.internal.dbsupport.Table] Locking table `java_app_test`.`schema_version`...
14:12:41.354 [DEBUG] [org.flywaydb.core.internal.dbsupport.Table] Lock acquired for table `java_app_test`.`schema_version`
14:12:41.358 [INFO] [org.flywaydb.core.internal.command.DbMigrate] Current version of schema `java_app_test`: 1
14:12:41.358 [WARN] [org.flywaydb.core.internal.command.DbMigrate] outOfOrder mode is active. Migration of schema `java_app_test` may not be reproducible.
14:12:41.359 [INFO] [org.flywaydb.core.internal.command.DbMigrate] Schema `java_app_test` is up to date. No migration necessary.
14:12:41.361 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter] Finished executing task ':flywayMigrate'

这里有什么问题?

最佳答案

sqlMigrationPrefix 默认为 V,您的文件不以它开头。重命名文件或将前缀设置为空值。

关于java - 为什么 flyway 忽略了我的 SQL 迁移文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34942275/

相关文章:

java - 文件编写器如何停止从文件中写入文本

java - 如何使全选复选框起作用

gradle - 从Kotlin的Gradle获取项目实例

java - JUnit 使用 h2 数据库测试 flywaydb

postgresql - 基于函数的数据库的非线性开发与版本控制

java - 检查 json 是否包含字符串值

regex - gradle release plugin 自动版本模式

android - react native : Could not find com. android.tools.build :gradle:2. 2.3

spring-boot - Flyway 6 JavaMigrations 与 Spring Beans 的 native 依赖注入(inject)

java - 使用 Oracle 在 Hibernate 中插入多对一行时出现问题