原创Flyway 8.2.1和以后版本不再支持MySQL
1、问题
使用最新的Springboot 2.7.4和Flyway 9.4.0开发Demo,连接本地的MySQL 8.0进行测试,发现抛出了异常
…nested exception is org.flywaydb.core.api.FlywayException: Unsupported Database: MySQL 8.0
相关信息如下图所示
2、排查过程
从错误信息上看,发现竟然是不支持MySQL 8.0,调整为连接MySQL 5.7还是不行,难道不支持MySQL?不会吧!?
对于这个问题,网上搜索了一番,找到的文档解决方案都是降低Flyway的版本。但是这样就不能使用Flyway新版本了,MySQL这么流行,Flyway怎么会不支持呢?!是不是哪里搞错了。
带着诸多的疑问,在gitee上找到镜像源码项目(https://gitee.com/mirrors_flyway/flyway) ,下载了Flyway的开源代码,找到了抛出异常的位置,如下图所示:
org.flywaydb.core.internal.database.DatabaseTypeRegister.getDatabaseTypeForConnection(DatabaseTypeRegister.java:105)
接着找到数据库类型的包位置:org.flywaydb.core.internal.database,发现确实没有看到mysql
接着逐个版本往前追溯,在8.2.0版本找到了移除的日志信息
在8.2.1版本已经找不到mysql目录了
Github上有相关的issue,地址 https://github.com/flyway/flyway/issues/3340
至此,已经可以确定 flyway-core 8.2.1及以后的版本确实是不再支持MySQL。
3、解决方案
3.1 方案一(增加依赖库)
官方Flyway 8.2.1版本发布说明(https://flywaydb.org/documentation/learnmore/releaseNotes#8.2.1),如下图所示
从说明上可知,MySQL代码被提取出来作为插件,需要另外增加依赖,根据官方文档(https://flywaydb.org/documentation/database/mysql)的说明,解决方案如下:
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-mysql</artifactId>
</dependency>
3.2 方案二(指定版本)
pom.xml文件中,properties信息增加指定Flyway版本为最后支持MySQL的 8.2.0 版本,如下图所示
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgghghk
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13