数据库版本控制插件Flyway Q&A

1 篇文章 0 订阅
1 篇文章 0 订阅

1.flyway是否支持版本回滚

由于在版本管理时,没有额外的备份动作。因此当生产环境的数据发生变更后,无法回滚到上一个版本的数据库表结构及相关数据。

 

2.在使用flyway发布过程当中,当发现某一条业务数据有问题,进行手工修改,是否会影响到下一个数据库版本变更?

不会。flyway会在所选择连接的库中创建一张'schema_version'的表。表中会存放每次执行过的.sql文件的执行状态、执行时间、操作账号等相关信息。因此,当下一个数据库版本进行变更时,flyway插件仅会从下一个版本进行发布变更,不会影响到之前的操作。

3.flyway的每次版本变更均需创建一个新的.sql版本文件。若人为错误操作修改了之前的版本的.sql文件是否也能够更新数据库?

不能。由于flyway在读目录下的每个.sql文件时,会生成一个校验码在'schema_version'表中,若校验和不一致,会抛出[error]错误。也可通过mvnflyway:info查看错误信息。

 

4.若.sql语句在执行的过程当中,由于语法错误,是否会执行到一半后突然中断

不会。flyway在每一次执行.sql文件时,首先会判断语法,若语法出现错误,不会进行更新数据库的操作并同时抛出异常。在这种情况下,在表schema_version中,该版本的执行状态将变为失败。在修复了语法错误后,可先执行mvnflyway:repair命令进行修复,此时,shema_version中的这一条执行失败记录将会清除。再次执行mvn flyway:migrate命令即可完成数据库版本的更新。

 

5.Flyway是否支持更改表结构操作

Flyway支持DDL及DML语句。因此可以支持更新表结构操作,但当表不为空,同时数据类型不支持转换时,执行失败。举例:字符型字段更新为数字型字段;字符长度为80的字段修改为字符长度为10的字段(已存在长度上过20的数据)等。

 

6.Flyway是否可用于非Java开发项目

    Flyway除了能够与mvn、ant等JAVA编译环境做集成外,也提供了命令行的操作方式。通过简单的进行数据库的配置,将sql文件放在指定目录之后,即可通过命令行模式进行数据库的版本更新。另外,Jenkins也提供了Flyway命令插件供管理员使用。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值