Spring boot 项目集成Flyway

1.首先了解一下flyway 是什么东西

      1>Flyway是独立于数据库的应用、管理并跟踪数据库变更的数据库版本管理工具。用通俗的话讲,Flyway可以像SVN管理不同人的代码那样,管理不同人的sql脚本,从而做到数据库同步。

      2>Flyway对数据库进行版本管理主要由Metadata表和6种命令完成,Metadata主要用于记录元数据,每种命令功能和解决的问题范围不一样。

2.其次flyway 规范

      1> sql 规范   V+版本号(版本号的数字间以"."或"_"分隔开)+双下划线(用来分隔版本号和描述)+文件描述+后缀名,例如:V2017.9.30__Update.sql。(版本号必须唯一不然的话执行时会有冲突)

      2>指令规范(migrate、clean、info、validate、baseline、repair) 

3.最后flyway 集成 项目中

flyway 文件:

maven需要添加的jar 包:

     Spring boot 项目集成Flyway_第1张图片

java config :

   Spring boot 项目集成Flyway_第2张图片

执行flyway 

Spring boot 项目集成Flyway_第3张图片

Spring boot 项目集成Flyway_第4张图片

或者是直接执行命令:

java -Dspring.profiles.active=dev,flyway -jar wh-official-web.jar opFlyway:migrate

      这里有个需要注意的点,flyway 是支持事务回滚的但是  事务回滚只针对于DML 才有用,DDL 类型的不起作用,所以说如果一个sql 文件中既有DML 和 DDL 的话,前面执行的DDL 顺利执行而DML执行错误,这种情况数据库的结构会被修改,但是数据会被回滚,这样下次在执行的时候,由于数据库结构已经修改了,所以会报错,这种情况最好分文件处理执行sql ,比如DDL 的文件是单独执行的sql 文件,而DML 则是可以放在一起执行。(注意:应该屏蔽 delete 操作,update 操作,因为这可能会对数据库带来不可控制的影响,需谨慎。建议单独执行或者是codeview 审查后没问题了在执行)

你可能感兴趣的:(java,se,持续集成)