【Java】遇到Vert.x项目flyway初始化数据库问题

在做一个Vert.x项目时遇到下面的这个问题:

func[VertxMain.flywayStartup] Exception [org.flywaydb.core.api.FlywayException: Unable to instantiate class com.mysql.cj.jdbc.Driver : com.mysql.cj.jdbc.Driver - Unable to instantiate JDBC driver: com.mysql.cj.jdbc.Driver => Check whether the jar file is present] stackTrace[[org.flywaydb.core.internal.jdbc.DriverDataSource.<init>(DriverDataSource.java:180), org.flywaydb.core.internal.jdbc.DriverDataSource.<init>(DriverDataSource.java:144), org.flywaydb.core.api.configuration.ClassicConfiguration.setDataSource(ClassicConfiguration.java:1341), org.flywaydb.core.api.configuration.FluentConfiguration.dataSource(FluentConfiguration.java:803), io.yzh.VertxMain.flywayStartup(VertxMain.java:49), io.yzh.VertxMain.main(VertxMain.java:24)]] 

从上面的输出可以看到本次的Vert.x项目采用了flyway作为数据库的版本控制工具,而在项目启动的时候无法采用com.mysql.cj.jdbc.Driver进行数据库连接初始化。我们检查了一下项目发现,原来是MySQL8.x的JDBC包并没有在pom.xml中引入。于是引入后重新启动又抛出另一个异常:

2020-05-09 11:30:44,311:ERROR main (VertxMain.java:53) - func[VertxMain.flywayStartup] Exception [java.nio.charset.MalformedInputException: Input length = 1 - Unable to calculate checksum of V1.0.00001__v20200506.18.31_CREATE_COMIC_BOOK.sql
Input length = 1] stackTrace[[org.flywaydb.core.internal.resolver.ChecksumCalculator.calculateChecksumForResource(ChecksumCalculator.java:80), org.flywaydb.core.internal.resolver.ChecksumCalculator.calculate(ChecksumCalculator.java:46), org.flywaydb.core.internal.resolver.sql.SqlMigrationResolver.getChecksumForLoadableResource(SqlMigrationResolver.java:143), org.flywaydb.core.internal.resolver.sql.SqlMigrationResolver.addMigrations(SqlMigrationResolver.java:181), org.flywaydb.core.internal.resolver.sql.SqlMigrationResolver.resolveMigrations(SqlMigrationResolver.java:88), org.flywaydb.core.internal.resolver.sql.SqlMigrationResolver.resolveMigrations(SqlMigrationResolver.java:44), org.flywaydb.core.internal.resolver.CompositeMigrationResolver.collectMigrations(CompositeMigrationResolver.java:127), org.flywaydb.core.internal.resolver.CompositeMigrationResolver.doFindAvailableMigrations(CompositeMigrationResolver.java:109), org.flywaydb.core.internal.resolver.CompositeMigrationResolver.resolveMigrations(CompositeMigrationResolver.java:95), org.flywaydb.core.internal.resolver.CompositeMigrationResolver.resolveMigrations(CompositeMigrationResolver.java:46), org.flywaydb.core.internal.info.MigrationInfoServiceImpl.refresh(MigrationInfoServiceImpl.java:130), org.flywaydb.core.internal.command.DbValidate$2.call(DbValidate.java:142), org.flywaydb.core.internal.command.DbValidate$2.call(DbValidate.java:130), org.flywaydb.core.internal.jdbc.TransactionalExecutionTemplate.execute(TransactionalExecutionTemplate.java:66), org.flywaydb.core.internal.command.DbValidate.validate(DbValidate.java:130), org.flywaydb.core.Flyway.doValidate(Flyway.java:279), org.flywaydb.core.Flyway.access$100(Flyway.java:74), org.flywaydb.core.Flyway$1.execute(Flyway.java:167), org.flywaydb.core.Flyway$1.execute(Flyway.java:159), org.flywaydb.core.Flyway.execute(Flyway.java:530), org.flywaydb.core.Flyway.migrate(Flyway.java:159), io.yzh.VertxMain.flywayStartup(VertxMain.java:51), io.yzh.VertxMain.main(VertxMain.java:24)]] 

后面经过排查flyway执行项目中对应位置的SQL文件,而文件的编码为GB2312引发的执行错误。这里需要将文件重新转换成UTF-8,至此就可以解决问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kida 的技术小屋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值