SpringBoot-中的Flyway配置

80次阅读

共计 1049 个字符,预计需要花费 3 分钟才能阅读完成。

在我们的 Springboot 项目——studentsystem 中使用 flyway 进行数据库版本控制。我们的 springboot 项目采用 gradle 管理。

studentsystem 项目地址:https://github.com/zjgirl/Spr…
flyway 配置参考地址:https://blog.waterstrong.me/f…

配置过程很简单,只需要在 build.gradle 中添加配置即可:

// 引入配件

plugins {id"org.flywaydb.flyway"version"4.0.3"}

// 配置 flyway properties

flyway {

    url = jdbc:h2:./.tmp/testdb

    user = sa

    password =

}

// 添加 mysql 依赖

dependencies {compilegroup:'mysql',name:'mysql-connector-java',version:'8.0.11'}

flyway 默认执行的 sql 脚本路径是 resources/db/migration,.sql 脚本以 Vx__xxx_xxx_xxx.sql 的方式命名。配置完成后,执行 ./gradlew tasks 可以看到可用的命令,执行 ./gradlew flywayMigrate 可以执行 sql 脚本。

注意:按理来说,build 项目应该会自动执行 flyway,但是我们这里竟然不能自动执行!!!不知道什么原因。。。。。还有,它无法在非空数据库中迁移表,即使在 application.properties 中设置了spring.flyway.baseline-on-migrate=true。很奇怪!!!


另外,在配置过程中遇到了一些奇葩的错:

1、mysql 数据库的密码设置的有问题,报错 caching_sha2_password;原因是在 mysql8 之前的版本使用的密码加密规则是 mysql_native_password,但是在 mysql8 则是 caching_sha2_password,可以重设密码解决:

create user 'root'@'localhost' identified with mysql_native_password by 'your password';

FLUSH PRIVILEGES;

2、‘query_cache_size’的错误:这个是由于依赖的 mysql 版本太老了,mysql-connector-java 的版本还是 6.0.6,需要升级版本到 8.0.11,这个报错就不存在了。

正文完
 0