Flyway 3.2.1无法读取配置文件占位符,CLI传参正常求助排查
解决Flyway 3.2.1配置文件占位符不生效的问题
你的问题核心在于Flyway 3.2.1并不支持flyway.conf格式的配置文件,同时你使用的CLI参数也和这个版本不兼容,导致配置文件里的占位符没有被正确加载。下面是具体的修复步骤和验证点:
1. 更换配置文件格式
Flyway 3.x系列只识别.properties格式的配置文件,flyway.conf是Flyway 5.x及以后版本才引入的特性。你需要:
- 把你的配置文件重命名为
flyway.properties - 保持内容不变:
flyway.placeholders.schemaName=testDbName
2. 修正CLI配置文件参数
Flyway 3.2.1的CLI参数是-Dflyway.configFile(单数形式),而不是你使用的-Dflyway.configFiles(复数)。调整后的命令应该是:
flyway:migrate -Dflyway.outOfOrder=true -DskipTests -Dflyway.configFile=/resource/flyway.properties
3. 确保配置文件的加载路径
如果你想让Flyway自动加载配置文件,不需要指定configFile参数,只需把flyway.properties放在classpath的根目录(也就是resources/文件夹下,不是resources/db/migration),Flyway启动时会自动扫描这个位置的配置文件。
额外验证点
- 检查占位符键名的大小写:Flyway的占位符是大小写敏感的,确保配置文件里的
schemaName和SQL脚本中的${schemaName}完全一致 - 确认配置文件路径正确:如果使用相对路径,要保证路径是相对于你执行CLI命令的工作目录;建议使用绝对路径避免歧义
当你通过CLI直接传递-Dflyway.placeholders.schemaName时能生效,是因为JVM参数直接绕过了配置文件的加载逻辑,直接把值传递给了Flyway,所以不会触发配置文件相关的问题。
内容的提问来源于stack exchange,提问作者00Shunya
相关产品推荐
相关产品推荐

