Flyway入门_flyrouter

Flyway入门_flyrouter1.为什么要用flyway?在真实的项目开发中,我们每个人都会有一个应用软件和与其相联系的数据库。对于个人开发来说,这样就够了。但是,项目开发一般都不止一个人,因此一定会出现我在我的本地有一套软件和相应的数据库系统,我的另一个同事会在他的本地有一套他自己的软件和相应的数据库系统。我们需要面临的第一个问题就是我们两个人如何集成我们的数据库系统,之后还要处理如何将数据库系统迁移到测试环境和生产环境当…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

1.为什么要用flyway?

在真实的项目开发中,我们每个人都会有一个应用软件和与其相联系的数据库。对于个人开发来说,这样就够了。但是,项目开发一般都不止一个人,因此一定会出现我在我的本地有一套软件和相应的数据库系统,我的另一个同事会在他的本地有一套他自己的软件和相应的数据库系统。我们需要面临的第一个问题就是我们两个人如何集成我们的数据库系统,之后还要处理如何将数据库系统迁移到测试环境和生产环境当中去。其实道理和git合并代码一样的道理,当2个人或多个同时修改了一份代码那么我们如何进行数据库同步?在比如我们如果修改了脚本那么如何同步测试环境和生产环境,以上那么变得非常麻烦
现在就用到了我们的flyway
Flyway是一款开源的数据库版本管理工具,Flyway可以独立于应用实现管理并跟踪数据库的变更,Flyway根据自己的约定,不需要复杂的配置就可以实现数据的Migrate。Migrations可以写成SQL脚本,也可以写在Java代码中,Flyway还支持Spring Boot。

2.Flyway的运行机制

首先flyway会指向一个空的数据库,他讲尝试找到其架构历史表。由于数据库是空的,Flyway将找不到它并将 改为创建它。现在有一个数据库,其中包含一个名为flyway_schema_history 的空表:

在这里插入图片描述
该表将用于跟踪数据库的状态。

紧接着,Flyway将开始扫描文件系统或应用程序的类路径以进行迁移。它们可以用Sql或Java编写。

然后根据版本号对迁移进行排序,并按顺序应用:
在这里插入图片描述
在应用每个迁移时,模式历史记录表会相应更新:
在这里插入图片描述
Flyway将再次扫描文件系统或应用程序的类路径以进行迁移。将根据架构历史记录表检查迁移。如果它们的版本号低于或等于标记为当前版本的版本号,则会忽略它们。

这句话非常重要,每当我重启项目的时候由于历史记录表中有了我们版本号,现在项目中的版本会跟历史记录表中版本进行比较,那么当我们想更新数据表的时候怎么办?
我们只需要定义一个高版本的记录表就可以让flyway去自动更新数据库表叫做迁移

在这里插入图片描述
总结一句话就是:flyway会去检查我们项目中的脚本同时为我们在历史记录表中记录版本,当有新的版本的时候就会更新如果已经在记录表中的时候就不需要做任何事情这样的过程为迁移(Migrate)

以下是sql脚本的命名规则:

在这里插入图片描述
首先我们需要一个大写的V作为版本的前缀标志,然后在后面紧跟着一个数字作为版本号,这个就是我之前提到的Flyway进行追踪的依据,在版本号后面需要下划线作为分隔符用来分割版本号和说明(这里特别需要注意的是分隔符是两个下划线)。
V1__xxxx.sql

配置详解:

flyway.baseline-description对执行迁移时基准版本的描述.
flyway.baseline-on-migrate当迁移时发现目标schema非空,而且带有没有元数据的表时,是否自动执行基准迁移,默认false.
flyway.baseline-version开始执行基准迁移时对现有的schema的版本打标签,默认值为1.
flyway.check-location检查迁移脚本的位置是否存在,默认false.
flyway.clean-on-validation-error当发现校验错误时是否自动调用clean,默认false.
flyway.enabled是否开启flywary,默认true.
flyway.encoding设置迁移时的编码,默认UTF-8.
flyway.ignore-failed-future-migration当读取元数据表时是否忽略错误的迁移,默认false.
flyway.init-sqls当初始化好连接时要执行的SQL.
flyway.locations迁移脚本的位置,默认db/migration.
flyway.out-of-order是否允许无序的迁移,默认false.
flyway.password目标数据库的密码.
flyway.placeholder-prefix设置每个placeholder的前缀,默认${.
flyway.placeholder-replacementplaceholders是否要被替换,默认true.
flyway.placeholder-suffix设置每个placeholder的后缀,默认}.
flyway.placeholders.[placeholder name]设置placeholder的value
flyway.schemas设定需要flywary迁移的schema,大小写敏感,默认为连接默认的schema.
flyway.sql-migration-prefix迁移文件的前缀,默认为V.
flyway.sql-migration-separator迁移脚本的文件名分隔符,默认__
flyway.sql-migration-suffix迁移脚本的后缀,默认为.sql
flyway.tableflyway使用的元数据表名,默认为schema_version
flyway.target迁移时使用的目标版本,默认为latest version
flyway.url迁移时使用的JDBC URL,如果没有指定的话,将使用配置的主数据源
flyway.user迁移数据库的用户名
flyway.validate-on-migrate迁移时是否校验,默认为true.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/210300.html原文链接:https://javaforall.net

(0)
上一篇 2025年7月26日 下午3:22
下一篇 2025年7月26日 下午4:01


相关推荐

  • 如何用人工智能大模型,进行作业批改?

    如何用人工智能大模型,进行作业批改?

    2026年3月14日
    0
  • busybox引导linux内核_linux移植教程

    busybox引导linux内核_linux移植教程文章目录一、搭建NFS服务器二、使用BusyBox构建跟文件系统2.1修改顶层Makefile2.2busybox中文支持2.3配置busybox2.4编译busybox2.5向根文件系统添加lib库2.5.1向{rootfs}/lib目录下添加库文件2.5.2向{rootfs}/usr/lib目录下添加库文件2.6创建其他文件夹三、测试文件系统(NFS挂载)3.1设置uboot中环境变量3.2命令解析四、完善文件系统4.1创建{rootfs}/etc/init.d/rcS文件4.2

    2022年10月6日
    5
  • windows下搭建tracker服务器

    windows下搭建tracker服务器RT,需要下载工具下载,解压,得到一个BitCometTracker_0.5[做服务器tracker]的文件夹,打开“BitCometTracker_0.5”文件夹,双击运行“BitCometTracker”打开软件之后,状态是停止的的状态,需要点击“run”这样就行了,如果需要修改配置端口,需要点击“config”架设好后,您的tracker服务器…

    2022年6月16日
    85
  • RC电路知识讲解「建议收藏」

    RC电路知识讲解「建议收藏」RC电路是指由电阻R和电容C组成的电路,他是脉冲产生和整形电路中常用的电路。1.RC1.RC充电电路电源通过电阻给电容充电,由于一开始电容两端的电压为0,所以电压的电压都在电阻上,这时电流大,充电速度快。随着电容两端电压的上升,电阻两端的电压下降,电流也随之减小,充电速度变小。充电的速度与电阻和电容的大小有关。电阻R越大,充电越慢,电容C越大,充电越慢。衡量充电速度的常数t(tao)=RC…

    2025年7月31日
    6
  • Ceph集群定时Scrub

    Ceph集群定时Scrub1 背景 Ceph 集群会定时进行 Scrub 操作 在 Ceph 对接 OpenStack 的场景中 如果 Ceph 集群正在进行 Scrub 操作 会对 Scrub 的数据进行加锁 如果 OpenStack 使用 Ceph 作为后端存储的虚拟机此时也在访问该数据 就会导致 OpenStack 中使用 Ceph 作为后端存储的虚拟机可能会出现卡顿的现象 1 Scurb 是什么 Scrub 是 Ceph 集群副本进行数据扫描的操作 用以检测

    2026年3月18日
    2
  • JVM垃圾回收算法与参数配置

    JVM垃圾回收算法与参数配置引用计数法这是个古老而经典的垃圾收集算法 其核心就是在对象被其他所引用时计数器 1 而当引用失效时 1 但是这种方式有非常严重的问题 无法处理循环引用的情况 还有就是每次进行加减操作比较浪费系统性能 标记清除法分为标记和清除两个阶段进行处理内存中的对象 当然这种方式也有非常大的弊端 就是空间碎片问题 垃圾回收后的空间不连续 不连续的内存空间工作效率低于连续的内存空间 复制算法 java

    2025年9月28日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号