Flyway数据库版本控制工具的使用与问题解决
为什么要用flyway?
多人合作开发,多环境部署项目的情况下(dev数据库,test数据库,prod数据库)
使用前开发流程是:开发人员写好sql,整理为sql文件,上传到群里,部署时找到对应的多个sql文件,挨个去test,prod库执行
使用后开发流程是:开发人员写好sql,sql在项目中,跟git和svn一同被提交管理,同时执行的时候sql自动执行,无需人工介入
一、Flyway的作用
Flyway是一个开源的数据库版本控制工具,它主要用来管理、跟踪和应用数据库变更。无论是添加新的表、修改列的数据类型,还是执行SQL脚本,Flyway都能帮你轻松搞定。通过Flyway,你可以避免手动管理数据库变更的繁琐,减少出错的可能性,提高开发效率。
二、Flyway使用方法
1.添加依赖
首先,你需要在项目中添加Flyway的依赖。如果你使用的是Maven,可以在pom.xml文件中添加相应的依赖。
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>你的Flyway版本号</version>
</dependency>
2.配置Flyway
在项目的配置文件(如application.properties或application.yml)中,你需要配置Flyway的相关参数,如数据库连接信息、脚本位置等。
flyway.url=jdbc:你的数据库连接URL
flyway.user=数据库用户名
flyway.password=数据库密码
flyway.locations=classpath:db/migration
在SpringBoot项目中,flyway可以使用已经配置好的数据源
flyway:
enabled: true
# 禁止清理数据库表
clean-disabled: true
# 如果数据库不是空表,需要设置成 true,否则启动报错
baseline-on-migrate: true
# 与 baseline-on-migrate: true 搭配使用
baseline-version: 0
locations:
- classpath:db/migration/db1
- classpath:db/migration/db2
- classpath:db/migration/gov
Flyway YAML配置属性及其描述和默认值:
flyway.baseline-on-migrate:是否在迁移时自动执行基线化。如果设置为true,Flyway将在迁移时自动执行基线化,即设置初始的基线版本。默认值:false。
flyway.check-location:检查迁移脚本所在的位置是否存在。这有助于确保在尝试读取迁移脚本之前,其位置是有效的。默认值:true。
flyway.clean-on-validation-error:在验证错误时,是否自动执行清理。如果设置为true,当验证数据库时发生错误,Flyway将尝试清理数据库。默认值:false。
flyway.enabled:是否启用Flyway。如果设置为false,Flyway将不会被执行。默认值:true。
flyway.encoding:设置SQL迁移文件的编码。这决定了如何读取和解析迁移脚本文件。默认值:UTF-8。
flyway.locations:迁移脚本的位置。这是Flyway查找迁移脚本的目录或路径。可以指定多个位置,用逗号分隔。默认值:db/migration。
flyway.placeholder-prefix:设置每个占位符的前缀。占位符是在SQL迁移脚本中使用的变量,它们可以在运行时被替换为实际的值。默认值:${。
flyway.placeholder-suffix:设置占位符的后缀。与flyway.placeholder-prefix一起使用,用于定义完整的占位符格式。默认值:无。
flyway.schemas:指定Flyway管理的数据库模式(schemas)。如果设置了这个属性,Flyway将只管理指定的模式中的迁移。默认值:无。
flyway.table:Flyway用于存储元数据的表名。Flyway使用这张表来跟踪已经应用的迁移。默认值:flyway_schema_history。
编写迁移脚本
在配置的脚本位置下,你需要编写SQL迁移脚本。Flyway会根据脚本的文件名自动排序并执行。每个脚本都应包含一个描述性的文件名和一个SQL语句。
例如,V1__Create_person_table.sql可能包含创建person表的SQL语句。
数据迁移文件名称格式为:V[version]__[name].sql。
注意:名称中[version]和[name]之间是两个下划线!
固定格式!!!

运行Flyway
当你启动应用程序时,Flyway会自动检查数据库,找出需要执行的迁移脚本,并应用它们。你也可以通过编程方式手动触发Flyway的迁移过程。
flyway初次运行会在数据库中检查有没有"flyway_schema_history"表,如果你配置了其余表名,也就是配置的那个表.如果没有会自动生成,其中存储的是各个脚本执行的记录,以及各个脚本的文件MD5值,所以执行过的脚本不能修改,用来存档
Fly脚本错误如何解决
如果是sql写错了,想要修改后重新执行,需要将"flyway_schema_history"表中执行失败的历史数据删除,再重新启动项目即可
本文介绍了Flyway在多人协作开发和多环境部署中的作用,包括如何添加依赖、配置参数、编写和执行迁移脚本,以及遇到错误时的解决策略。
887

被折叠的 条评论
为什么被折叠?



