Flyway数据库版本控制工具的使用与问题解决

本文介绍了Flyway在多人协作开发和多环境部署中的作用,包括如何添加依赖、配置参数、编写和执行迁移脚本,以及遇到错误时的解决策略。

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"表中执行失败的历史数据删除,再重新启动项目即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值