Flyway管理数据库MySQL5.7入坑记录(三)
真是不用不知道,问题真不少,经过反复尝试,上网查询终于Flyway的Gradle插件终于可以工作了,但是错误又再一次出现了。
第三坑,执行flywayMigrate提示信息:Flyway Teams Edition or MySQL upgrade required: MySQL 5.7 is no longer supported by Flyway Community Edition, but still supported by Flyway Teams Edition.
这个信息已经很明白的说明了,现有使用的Flyway开源版本不支持5.7了,如果还想要使用请使用收费的版本。我心中一万个FFFFFFFFF。
至此看来只能是升级MySQL到8.0了,而我机器的MySQL暂时还无法升级,这样看来Flyway是不能用了,花了这么长时间没法用,实在不甘心,于是再次上网查了一下,发现了下面的网文给了我启发
https://blog.csdn.net/Alex_81D/article/details/122713943 运行flyway报错, MySQL 5.6 is no longer supported by Flyway Community Edition,问题处理
该文中提到的版本是5.6,解决的方法有两种,一是升级MySQL 5.7;另一种是降低Flyway的版本。这给了我启发,我也可以降低Flyway版本,早期的Flyway版本肯定可以使用MySQL 5.7。经过一番测试后发现Flyway从8.0开始不再支持MySQL 5.7,因此它的7.x版本是可以支持MySQL 5.7的,于是找到Flyway 7.x的最后版本7.15.0。具体配置如下所示。
buildscript { ext { springBootVersion = '2.5.13' FAST_MIRROR_REPO_URL = 'https://maven.aliyun.com/nexus/content/groups/public/' FLYWAY_VERSION = '7.15.0' } repositories { maven { url FAST_MIRROR_REPO_URL } mavenCentral() } dependencies { classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}" classpath 'mysql:mysql-connector-java:8.0.29' classpath "org.flywaydb:flyway-core:${FLYWAY_VERSION}" } } plugins { id "org.flywaydb.flyway" version "${FLYWAY_VERSION}" } flyway { url = 'jdbc:mysql://localhost:3306/jeesite4?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai' user = 'root' password = 'root' locations = ['filesystem:db/migration'] }
需要注意的是在buildscript中的对Flyway的依赖包制品名称与高版本的也不相同。配置中黑体字的内容
classpath "org.flywaydb:flyway-core:${FLYWAY_VERSION}"
通过查看Flyway全部的下载包(https://repo1.maven.org/maven2/org/flywaydb/)发现,Flyway是从8.2.1开始将MySQL的处理机制单独分离为一个jar文件,因此8.2.1版本以上使用如下依赖配置,但是不支持MySQL 5.7,只能升级MySQL了。
classpath "org.flywaydb:flyway-mysql:9.2.0"
至此,Flyway在Gradle的插件终于能正常使用了。
期间用到的Flyway网文参考:
https://blog.csdn.net/u014091123/article/details/78133522 快速掌握和使用Flyway
https://zhuanlan.zhihu.com/p/501208093 于Flyway的数据库版本控制实战
https://blog.csdn.net/weixin_42139800/article/details/121949402 从零搭建flyway+Gradle+Spring Boot,快速上手开发
https://github.com/songlijun2019/spring-play/tree/main/spring-play-gradle
https://blog.csdn.net/buertianci/article/details/124846999 数据库版本管理框架-Flyway
https://flywaydb.org/documentation/learnmore/releaseNotes Flyway的各版本发布说明