小编这次要给大家分享的是SpringBoot如何整合Flyway,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。
Flyway是什么
Flyway是一款开源的数据库版本管理工具,Flyway可以独立于应用实现管理并跟踪数据库的变更,Flyway根据自己的约定,不需要复杂的配置就可以实现数据的Migrate。Migrations可以写成SQL脚本,也可以写在Java代码中,Flyway还支持Spring Boot。
简介
在团队开发当中,有可能每个人都是使用自己本地的数据库。当数据库的表或者字段更新时,往往需要告知团队的其他同事进行更新。
Flyway数据库版本迁移工具,目的就是解决该问题而诞生的(我自己想的)。每当我们更新数据库的时候,只需要添加SQL文件到指定目录中。Flyway会在数据库创建一个表,专门记录已更新的SQL文件。当我们下次执行时则不会执行已记录并且执行成功的SQL文件。
整合
maven
现在的Flyway的最新版本已经到了6.4.2
。我用的是6.3.3
。
<!-- https://mvnrepository.com/artifact/org.flywaydb/flyway-core --> <dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> <version>6.3.3</version> </dependency>
application配置
搞定了Flyway的依赖后,修改一下SpringBoot的application.yml
或application.xml
配置。
spring: flyway: url: jdbc:mysql://192.168.138.132:3306/hotel-server?useUnicode=true&characterEncoding=UTF-8 user: johnson password: 123456 table: flyway_schema_history enabled: true locations: classpath:db/migration clean-disabled: false
flyway配置详解
url:连接数据库的Url 默认为spring.datasource.url
user:连接数据库的账号 默认为spring.datasource.username
password:连接数据库的密码 默认为spring.datasource.password
table:自定义数据库版本管理表 默认为 flyway_schema_history
enabled:是否开启 默认为开启
locations:SQL文件存放路径 默认 classpath:db/migration
SQL文件
上面的locations
参数配置的SQL文件存放路径为 classpath:db/migration
,classpath
对应的目录就是resources
目录,创建后的目录如下图:
SQL文件如上图,SQL文件名必须为V1.0.x__xxx.sql
(注意:这里的下划线为两个_
,我也是掉坑了才知道),这样可以对应SQL更新的版本号。启动了SpringBoot项目后,就会自动帮你执行SQL文件,可以看到数据库版本控制表中生成的数据:
clean操作
Flyway的clean
操作:彻底清除已配置的架构,它将有效地为您提供一个全新的起点。所有对象(表,视图,过程等)都将被删除。
spring: flyway: clean-on-validation-error: true clean-disabled: false
clean-on-validation-error
:发生验证的错误时是否执行clean操作(如SQL执行失败),默认false,生产中必须使用false。clean-disabled
:是否禁用clean操作,默认false,生产中必须使用true
如果我们设置 clean-on-validation-error = true
,clean-disabled = false
。
当我们的SQL文件执行失败,在数据库版本控制表flyway_schema_history
会添加一条失败的记录,success字段为0,此时并不会执行clean
操作。
当把SQL文件修改正确并执行完后,此时flyway_schema_history
会把失败记录的success字段由0改为1。并且会执行clean
操作!!!!!整个数据库的表里面的数据都被清空了!(除非你在SQL文件中添加了insert
操作)
其实在开发环境我也是不建议使用clean
,毕竟填数据也是要时间的。。。
总结
团队开发当中的必备工具啊!不过生产环境当中记得把clean-disabled
改为true
看完这篇关于SpringBoot如何整合Flyway的文章,如果觉得文章内容写得不错的话,可以把它分享出去给更多人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。