首页 > 数据库 >flyway数据库改动版本控制工具

flyway数据库改动版本控制工具

时间:2023-10-16 22:26:55浏览次数:67  
标签:改动 版本控制 core flyway resolvedMigration org flywaydb

核心源码阅读路径

执行的核心代码位置入口
spring-boot-autoconfigure包中:
org.springframework.boot.autoconfigure.flyway.FlywayMigrationInitializer->afterPropertiesSet->migrate方法

一般会见到一些探测的问题,是在org.flywaydb.core.Flyway#doValidate类中里面做的

  • 常见的问题
Caused by: org.flywaydb.core.api.FlywayException: Validate failed: 
Detected resolved migration not applied to database: 001.002.001.001

具体的而校验逻辑是在:org.flywaydb.core.internal.command.DbValidate#validate 这个类进行的

校验过程中创建MigrationInfoServiceImpl,其中加载已有脚本是在org.flywaydb.core.internal.info.MigrationInfoServiceImpl#refresh这个方法执行的时候进行的

  • 这块的逻辑是根据context的配置信息获取指定classpath的SQL脚本文件
  Collection<ResolvedMigration> resolvedMigrations = migrationResolver.resolveMigrations(context); 
  • SQL脚本是否已经执行标识,后面新增的保存近pendingResolverVersioned。如果已经执行过的序号中间新增会报错
   ResolvedMigration resolvedMigration = resolvedVersioned.get(Pair.of(av.getLeft().getVersion(), av.getLeft().getType().isUndo()));
    if (resolvedMigration != null) {
        pendingResolvedVersioned.remove(resolvedMigration);
    }

标签:改动,版本控制,core,flyway,resolvedMigration,org,flywaydb
From: https://www.cnblogs.com/perfectLi/p/17613306.html

相关文章

  • chisel安装和使用+联合体union的tagged属性+sv读取文件和显示+sv获取系统时间+vcs编译
    chisel安装和使用sbt:scalabuildtool,是scala的默认构建工具,配置文件是build.sbt。mill:一个新的java/scala构建工具,运行较快,与sbt可以共存,配置文件是build.sc。chisel的安装可以参考这篇文章。安装过程务必联网,而没有联网情况下的安装,按照其它的说明,如移动缓存文件等,并无法正常......
  • 深入理解Git版本控制:构建协作、追踪和管理代码的完美工具
    ......
  • 6.swagger完善:界面显示注释+多版本控制
    周末,写点简单的水一下。新版本的vs创建项目的时候可以选择自带一个swagger。然而这只是基本的swagger功能。 几个接口无所谓啦,随着接口越来越多,就这么丢给你,一时间也会懵逼,所以这篇文章要做的有两个功能。给swagger文档添加注释给swagger添加切换“版本”的功能(也可以理解......
  • Git版本控制
    Git版本控制注意:开始学习之前,确保自己的网络可以畅通的连接Github:https://github.com,这个是一个国外网站,连起来特别卡,至于用什么方式实现流畅访问,懂的都懂。其实版本控制在我们的生活中无处不在,比如你的期末或是毕业答辩论文,由于你写得不规范或是老师不满意,你的老师可能会让你......
  • Git版本控制工具
    Git版本控制工具一.简介1、git是一款分布式的版本控制工具,使用git每台本地主机都可以作为一个本地库,每个本地库可实现资源的相互共享,也可以把本地库的资源推送到远程仓库中(码云、github),不同本地库可以作为一个节点,允许有多个节点之间实现资源共享,避免了单点故障。2、与SVN区......
  • Git:分布式版本控制系统的利器
    在现代软件开发中,版本控制是一个至关重要的环节。Git作为一款分布式版本控制系统,为开发者们提供了高效、灵活的版本管理方案。本文将介绍Git的基本用法和主要特点,帮助您更好地理解和使用这个强大的工具。Git简介Git是由LinusTorvalds创造的分布式版本控制系统,以其速度和灵活性而闻......
  • fastadmin数据库改动后手工修改相关文件
    在项目开发过程中了,或二次开发时,项目的MVC文件已经做了大量的修改,不能直接使用后台的一键生成CURD来重新生成相关的文件了。需要我们手工去改相关的文件了。比如:数据库状态字段的值做了修改,去掉了其中一项。1、控制器->C检查关联查询/数据限制有没有配置,这个涉及关联数据能不能......
  • svnWebUI svn服务端web 开源代码版本控制系统 图形化管理系统
    svn是Subversion的简称,是一个开源的代码版本控制系统,svn就是用于多人共同开发同一个项目,达到资源共用目的工具。版本控制是什么?版本控制(Revisioncontrol)是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理。可记录每个版本的信息,方便问题追踪。同时版本控制......
  • Git :团队协作和版本控制的最佳实践
    Git是目前最流行和广泛使用的分布式版本控制系统之一。它不仅能够有效管理代码的版本历史,还提供了强大的团队协作功能。本篇博客将介绍Git的基本概念和常用操作,并详细讲解如何利用Git进行版本控制和团队协作,以提高开发效率和代码管理能力。什么是GitGit是一个分布式版本控制系统......
  • 大厂版本控制利器——GIT——最先进的分布式版本控制系统
    哈喽,大家好,我是指北君。作为程序员,对版本控制工具肯定不陌生。对很多资深程序员来说,CVS和SVN曾经占据着统治地位。随着互联网飞速发展,为了更好地适应互联网时代软件版本管理的需要,采用分布式版本库的Git应运而生,并迅速占领各大互联网阵地,独占鳌头。关于GitGit是LinusTorval......