Quarkus后端设置Flyway文件编码,解决社区版编码检测报错
Quarkus 3.10.0 + Flyway 9.22.3 升级后出现 Flyway Teams 版本依赖错误
将Maven项目升级到Quarkus 3.10.0搭配flyway-core 9.22.3后,运行时触发以下错误:
org.flywaydb.core.internal.license.FlywayTeamsUpgradeRequiredException: Flyway Teams Edition upgrade required: detectEncoding is not supported by Flyway Community Edition at org.flywaydb.core.api.configuration.ClassicConfiguration.setDetectEncoding(ClassicConfiguration.java:815) at org.flywaydb.core.api.configuration.FluentConfiguration.detectEncoding(FluentConfiguration.java:350) at io.quarkus.flyway.runtime.FlywayCreator.createFlyway(FlywayCreator.java:146) at io.quarkus.flyway.runtime.FlywayContainerProducer.createFlyway(FlywayContainerProducer.java:53)
我们并未主动启用编码检测功能,该功能是Quarkus自动开启的。尝试过在数据源URL添加&characterEncoding=UTF-8,以及设置quarkus.flyway.encoding=UTF-8,但都无法解决问题,请问如何手动设置编码以避免Quarkus调用setDetectEncoding?
解决方案
- 显式禁用Flyway的编码检测功能,在
application.properties中添加以下配置:quarkus.flyway.detect-encoding=false - 同时确保已正确指定Flyway的编码(可再次确认配置):
quarkus.flyway.encoding=UTF-8
Quarkus 3.10.x版本与Flyway集成时,默认会启用detectEncoding特性,但该特性仅Flyway Teams版支持,社区版无法使用。通过显式关闭编码检测并手动指定编码,即可绕过这个限制,无需升级到Teams版本。
内容的提问来源于stack exchange,提问作者MsBlueSky
相关产品推荐
相关产品推荐

