java-springboot: flyway 管理数据库版本

 在一般实际项目开发的过程中:

----dev(开发环境,供研发人员使用)

----test(测试环境,供测试人员使用,提出程序bug)

----pre_prod(预生产环境,仿真线上环境(稳定状态),供客户以及产品使用,需求变更通常基于此环境)

----prod(线上环境(非常稳定状态),正式提供对外服务)

        那么环境的不同各个的数据库是隔开的,经常的场景是需求的变更,表结构也会变化,这样研发人员直接操作开发环境的数据库,那么在发不同的环境就需要注意表结构的变化,通常就是我们表结构的变化,可能在会遗漏或是忘记在其他环境更新时也做同步变化。所以flyway管理数据库版本就可以引入我们的项目中。

最近的使用在springboot的项目中:

步骤一:引入pom依赖和插件配置

java-springboot: flyway 管理数据库版本_第1张图片

java-springboot: flyway 管理数据库版本_第2张图片

步骤二:配置文件的配置

       spring boot flyway 配置说明:(这里只说我用到的配置)

       flyway.baseline-on-migrate:当迁移时发现目标schema非空,而且带有没有元数据的表时,是否自动执行基准迁移,默认false.

 (1)application.yml:中的配置

java-springboot: flyway 管理数据库版本_第3张图片

(2)application-dev.yml,application-dev.yml,application-dev.yml:中的druid的配置

    主要是将一些对表的增删改查的权限打开

java-springboot: flyway 管理数据库版本_第4张图片

步骤三:启动项目

       启动项目时,你会发现你的项目会多一个文件夹,flyway会默认在classpath路径下的db/migration目录下查找sql脚本。并且在你的数据库会多一张表flyway_schema_history,他就是用于版本控制的核心,当检测到有新的版本需要迁移的时候,他会在这张表中的记录进行对比。没有执行过的版本,他会执行并且产生新的执行记录。

java-springboot: flyway 管理数据库版本_第5张图片

java-springboot: flyway 管理数据库版本_第6张图片

 实际应用:

    (1)新建脚本

      在你有表结构的变更的时候,你需要新建一个sql脚本,在db/migration目录下,但他的命令是有规则的;

      下面的图是我在网上找的,可以参考。上面我也粘出图片参考

java-springboot: flyway 管理数据库版本_第7张图片

 注意:

  (1)需要注意的是,有时候我们直接就操作数据库了,有些字段已经加了,这时候再写脚本,他会执行失败。他同样会在flyway_schema_history表中产生一条失败的记录。这时候就需要手动改为1再重启项目就可以了。java-springboot: flyway 管理数据库版本_第8张图片

  (2)还有种情况就是你在已经执行过的版本脚本修改了sql,这时项目启动也会报错。这时候你就需要在flyway_schema_history表中删除那条执行过的记录。再重启,这时候会出现(1)的情况,那就照(1)再操作一遍,重启项目就可以了。

 

在引入的时候会报错这时,注意看下日志,很快就会找出问题的。谢谢关照。

 

 

你可能感兴趣的:(java-spring,boot)