SpringBoot中引入数据库版本管理工具:Flyway

先来了解一下什么是Flyway:

  官网: flywaydb.org

  帮助文档:flywaydb.org/documentation/

  Slogan: Version control for your database (数据库版本控制)

  主要功能:Flyway可以方便的管理数据的版本,在不同的环境中迁移数据库变更。

  支持常见的多种数据库:Oracle,Mysql,DB2, SQLServer,PostgreSQL 等

  为什么要做数据库迁移?

  在开发过程中经常会存在数据库脚本的变更,A同事变更数据库后,其他同事拿到最新代码往往会报错;同时不同的环境之间也需要更新脚本同步数据库,会比较繁琐,而且容易引入错误,Flyway 就是用来解决这个问题

  

  基本工作原理:

  Flyway扫描文件系统或者classpath下的SQL Script,根据sql script的版本号依次执行扫描到的SQL Script, 每一个脚本执行后都会保持到数据库的表(flyway_schema_history)中,再次执行扫描的时候,如果发现的版本号低于或等于表中记录的版本,则不执行,新增的SQL Script又会按照版本号依次从低到高执行。

  

  Spring Boot Application中引入Flyway

  1)在pom.xml中导入Flayway依赖(其它的方式请参考帮助文档)

    要求Java 8以上,Maven 3.0 以上版本

    

    Flyway的maven插件也可以加入依赖

    

   2) 在application.yml或application.properties中引入flyway的配置

     

  3) 在resource目录下根据上面的locations配置创建文件夹: /db/migration

  4)将SQL Script放入migration文件夹中,在springboot启动的时候会自动执行里面的脚本。

   注意,引入flyway可以在项目刚开始的时候,也可以在项目中期,只需要把需要执行的sql script放到migration文件夹中即可

     

   5)关于SQL Script文件的命名

    例:V1_0_1__Initial_sql.sql

    在V1_0_1之后有两个下划线,这两个下划线之前是这个sql的版本号,之后是这个sql的文件名,版本号会保存在表的version列中,是sql是否执行的主要判断依据,在项目中最好和项目的主要版本号保持一直,并保证版本号递增,避免混淆或出错。

 

《完》

posted @ 2021-01-04 14:55  JamesPlay  阅读(667)  评论(0编辑  收藏  举报