数据库版本控制和迁移的工具之Flyway

数据库版本控制和迁移的工具之Flyway

背景

当我们的应用升级时往往会伴随着数据库表结构的升级,此时就需要迁移数据库的表结构。一般我们会使用工具或者脚本来实现,手动操作毕竟有一定风险,要是能在应用启动时自动升级数据库表结构就好了!Flyway正是这么一款工具~

什么是flyway

官网:https://www.red-gate.com/products/flyway/community/
官方文档: https://documentation.red-gate.com/fd/redgate-flyway-documentation-138346877.html

Flyway 是一个用于数据库版本控制和迁移的工具,它使用纯 SQL 来管理数据库的变化。Flyway 帮助开发人员自动化数据库的部署过程,确保数据库在不同环境中的一致性。通过 Flyway,开发人员可以轻松地跟踪和管理数据库的变更历史,从而避免手动操作带来的错误和不一致性。

Flyway 的工作原理是通过定义一系列的迁移脚本(通常以 SQL 文件的形式),这些脚本按照版本号顺序执行,从而将数据库从一个状态迁移到另一个状态。这种方式确保了数据库的变更过程是可追踪和可重复的2。

在理想情况下,所有对数据库的更改都应该通过 Flyway 的迁移脚本来完成,这样可以确保所有数据库实例在不同环境中保持一致。

①社区版目前不支持版本回退
②社区版本没有任务队列和异步任务的支持

flyway工作原理

Flyway在第一次执行时,会创建一个默认名为flyway_schema_history的历史记录表,这张表会用来跟踪或记录数据库的状态,然后每次项目启动时都会自动扫描在resources/db/migration下的文件的版本号并且通过查询flyway_schema_history来判断是否有新增文件,从而判断是否进行迁移。

Flyway通过版本号标记迁移文件,确保按顺序执行,所以版本号的规范非常重要。

脚本命名规范

在创建Flyway的SQL脚本时,有些命名规范需要遵守,这些命名规范决定了Flyway执行脚本的顺序和方式

在这里插入图片描述
Flyway脚本命名的规范以及最佳实践,版本号应该多层次命名,例如Vx.y.z_{sequence}__{create|alert|feature|fix}_Description_Timestamp.sql。这样的命名结构能够包含更多信息,比如团队层次、操作类型、描述和时间戳,有助于避免混乱。Flyway通过版本号标记迁移文件,确保按顺序执行,所以版本号的规范非常重要。

开发时注意事项

  • 版本号相同会报错(Found more than one migration with version 1.0.0.9)

Spring Boot项目使用Flyway

Spring Boot项目使用Flyway
参考URL: https://www.cnblogs.com/dreamingodd/p/6125435.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西京刀客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值