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

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

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

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

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

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

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

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

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

步骤二:配置文件的配置

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

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

 (1)application.yml:中的配置

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

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

步骤三:启动项目

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

 实际应用:

    (1)新建脚本

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

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

 注意:

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

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

 

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

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值