数据库版本控制:flywaydb

DB版本控制:SpringBoot集成Flyway 为什么要使用flyway?在多人开发的项目中,我们经常会遇到下面的问题,有了flyway,这些问题都能得到很好的解决。自己写的SQL忘了在所有环境执行。别人写的SQL我们不能确定是否都在所有环境执行过了。有人修改了已经执行过的SQL,期望再次执行。需要新增环境做数据迁移。每次发版需要手动控制先发DB版本,再发布应用版本... ...Flyway是一款流行的开源数据库迁移工具,主要用于对结构化数据库进行版本控制和升级管理。 阅读详情

数据库版本控制:flywaydb

案例demo

概念

Flyway 对数据库的所有更改都称为迁移。迁移可以是版本化的或可重复的。版本化迁移有两种形式:常规和撤消。
默认情况下,版本化和可重复迁移都可以用SQL 或Java编写,并且可以由多个语句组成。Flyway 自动发现文件系统和 Java类路径上的迁移。

  • 版本化迁移(Versioned migrations)

有一个版本、一个描述和一个校验和。版本必须是唯一的。该描述纯粹是提供信息,让您能够记住每次迁移的作用。校验和用于检测意外更改。版本化迁移是最常见的迁移类型。它们只按顺序应用一次。

⚠️ 可以通过提供具有相同版本的**撤消迁移(undo migration)**来撤消它们的影响。

  • 可重复的迁移(Repeatable migrations)

有描述和校验和,但没有版本。它们不是只运行一次,而是在每次校验和更改时(重新)应用。
在单次迁移运行中,可重复迁移总是最后应用,在所有挂起的版本化迁移都已执行之后。可重复迁移按其描述的顺序应用。

版本化迁移

应用场景
  • Creating/altering/dropping tables/indexes/foreign keys/enums/UDTs/… (创建/更改/删除表/索引/外键/枚举/UDT/…)
  • Reference data updates (数据更新)
  • User data corrections (用户数据更正)
版本号

任意数字格式:(整数)
如: 1、001、5.2、2021.12.13

撤销迁移

与常规版本化迁移相反。撤消迁移负责撤消具有相同版本的版本化迁移的影响。撤消迁移是可选的,不需要运行常规版本化迁移。

DELETE FROM brand WHERE name='DeLorean';
ALTER TABLE owner DROP driver_license_id;
DROP TABLE car;

⚠️

虽然撤消迁移的想法很好,但不幸的是它有时会在实践中失败。更可取的替代方法是:保持数据库与当前部署在生产中的所有代码版本之间的向后兼容性。

可重复迁移

有描述和校验和,但没有版本。它们不是只运行一次,而是在每次校验和更改时(重新)应用。
这对于管理数据库对象非常有用,这些对象的定义可以简单地在版本控制中的单个文件中维护。在单次迁移运行中,可重复迁移总是最后应用,在所有挂起的版本化迁移都已执行之后。可重复迁移按其描述的顺序应用。

应用场景
  • (Re-)creating views/procedures/functions/packages/… (重新)创建视图/过程/函数/包/…
  • Bulk reference data reinserts 批量引用数据重新插入

案例:

CREATE OR REPLACE VIEW blue_cars AS 
    SELECT id, license_plate FROM cars WHERE color='blue';

基于sql的迁移

迁移通常是用SQL编写的。这样可以轻松入门并利用任何现有的脚本、工具和技能。它使您可以访问数据库的全套功能,并且无需了解任何中间翻译层。

应用场景
  • DDL 更改(表、视图、触发器、序列等的 CREATE/ALTER/DROP 语句)
  • 简单的参考数据更改(参考数据表中的 CRUD)
  • 简单的批量数据更改(常规数据表中的 CRUD)
sql文件命名
文件名由以下部分组成:

1. 前缀:V用于版本化(可配置), U用于撤消(可配置)和 R可重复迁移(可配置)
2. 版本:带有点或下划线的版本可以根据需要分隔多个部分(不适用于可重复迁移)
3. 分隔符:(__两个下划线)(可配置)
4. 描述:下划线或空格分隔单词
5. 后缀:.sql(配置)
  • 版本化迁移

V1.0.7__add_new_tables_colums.sql

  • 撤销迁移

U1.0.7__remove_colums.sql

  • 可重复迁移

R__add_ functions.sql

springboot maven集成

  • 添加相关pom.xml引用
<!--数据库版本控制-->
<dependency>
   <groupId>org.flywaydb</groupId>
   <artifactId>flyway-mysql</artifactId>
   <version>8.2.1</version>
</dependency>

<!--数据库版本控制插件,可选-->
<plugin>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-maven-plugin</artifactId>
    <version>8.2.1</version>
    <configuration>
        <url>jdbc:mysql://ip:3306/dbName?serverTimezone=Asia/Shanghai&amp;useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false&amp;allowMultiQueries=true</url>
        <user>xxx</user>
        <password>xxx</password>
		<!--数据库驱动-->
        <driver>com.mysql.cj.jdbc.Driver</driver>
    </configuration>
</plugin>
  • 配置版本控制文件

创建迁移目录:src/main/resources/db/migration

  • 设置相关配置
spring:
  # 数据库版本控制
  flyway:
    # 是否开启flywaydb,默认 true
    enabled: true
    # 迁移脚本的位置,默认db/migration.
    locations:
      - "classpath:db/migration"
    # 当发现校验错误时是否自动调用clean,默认false;谨慎使用,开启的话如果失败会清空schemas
    # clean-on-validation-error: false
    # 对执行前移时基准版本的描述
    baseline-description: 基于1.0.6版本
    # 当迁移时发现目标schema非空,而且带有没有元数据的表时,是否自动执行基准迁移,默认false.
    baseline-on-migrate: true
    # 开始执行基准迁移时对现有的schema的版本打标签,默认值为1.
    baseline-version: "1.0.6"
    # 迁移时是否校验命名,默认false.
    validate-migration-naming: true
    # 迁移时是否校验,默认为true
    validate-on-migrate: true
    # 读取架构历史记录表时忽略丢失的迁移;默认 false
    ignore-missing-migrations: true
    # 是否混合迁移;默认:false
    # mixed: false
    # 允许“无序”运行迁移(默认值:false)
    out-of-order: true
    # 检查本地迁移文件是否存在;默认 true
    check-location: false
springboot - 整合flyway 一、概念 官网:https://flywaydb.org/ 数据库版本控制管理工具,通过集成Flyway可以实现启动项目时自动执行项目迭代升级。 Flyway已经支持数据库包括:Oracle, SQL Server, SQL Azure, DB2, DB2 z/OS, MySQL (including Amazon RDS), MariaDB, Google Cloud SQL, Postgre... 阅读详情

相关推荐

flyway的快速入门教程

Flyway是一款开源的数据库版本管理工具。它可以很方便的在命令行中使用,或者在Java应用程序中引入,用于管理我们的数据库版本。在项目或产品中,很难一开始就把业务理清楚,把数据库表设计好,因此数据表也会在迭代周期不断迭代。在Java应用程序中使用Flyway,能快速有效地用于迭代数据库表结构,并保证部署到测试环境或生产环境时,数据表都是保持一致的。flyway官方文档[这里是图片001]https在控制台可以看到相关日志打印,并在数据库中查看到已经创建好的表和相关记录变更。...

web18484626332的博客 920

flywaydb在项目中的使用

flyway在项目中的简单使用

yulang1992514的博客 2484

allegro 约束管理Constraint Manager(一)

介绍Cadence allegro 约束管理器CM的使用方法。

weixin_38975819的博客 8716

FlywayDB实现数据库迁移

FlywayDB是一个用于数据库版本控制的开源项目。它可以帮助开发人员管理和跟踪数据库的更改,以确保数据库的完整性和一致性。通过使用Flyway,开发人员可以执行数据库迁移,以确保数据库的结构和应用程序中的数据保持同步。Flyway还提供了对迁移的版本控制,可以轻松回滚到以前的版本或按顺序应用迁移。在开发过程中,开发人员可以使用Flyway来验证数据库迁移是否成功,并在生产环境中自动执行迁移。4.编写迁移脚本5.运行迁移并验证

suifengwing的博客 1462

COMSOL后处理与可视化

公众号→【COMSOL仿真交流】←更多精彩内容 后处理是采用COMSOL建模的一个重要环节。通过软件自带的可视化工具,可以快速方便的展现仿真结果。 COMSOL为使用者提供了多种后处理工具,包括表面图、切面图、等值线图、流线图、线图、体图等等。可按功能分为数据集(储存数据的地方)、派生值和表单(对数据进行进一步的操作)、绘图组合绘图类型(显示数据结果的地方)、导出数据与生成报告。   如果想用origin、matlab对模拟数据做进一步的处理,导出excel格式的模拟结果,这可以通过“导出

midiio的博客 4027

Ansys Icepak:通过 ECAD 导入和非共形网格划分掌握电子冷却

通过将 Icepak 与 HFSS(用于高频电磁学)、Ansys Mechanical(用于结构分析)和 Ansys Fluent(用于流体动力学)等 Ansys 产品相结合,工程师可以在单个工作流程中仿真电子系统的完整行为,从热和电气动力学到机械和流体动力学。精细网格可以应用于关键区域,而在不太重要的区域使用较粗的网格,从而在不牺牲精度的情况下加快仿真速度。这些功能使 Ansys Icepak 成为从事复杂电子设计的工程师不可或缺的工具,可实现更精确的热分析并缩短开发时间。用于高效仿真的非共形网格划分。

jkh920184196的博客 1394

Spring Boot与Flyway实现自动化数据库版本控制

使用Flyway之前部署脚本方式一般为开发人员按照顺序汇总数据库的升级脚, 然后DBA或者售后在生产库中按照顺序执行升级脚本。使用Flyway之后部署脚本方式就变更为开发人员将脚本构建到程序包中, 部署程序包后启动时Flyway自动执行脚本升级。

一个天蝎座的程序猿 1667

股票分时数据获取-东方财富

获取下股票分时数据,分时均价下线,分时成交额等,用于量化t0交易条件还是很不错了的。

meiaoxue1234的博客 1万+

浅谈flywaydb

一般来说,软件发布应该包含文档、代码和DB脚本等,在发布上线时,一般都需要先执行DB脚本,再启动软件,犹豫一些疏忽之类,经常容易出现数据库未升级导致软件发布失败的场景,因此一些组件提供了启动自动执行DB的操作,例如hibernate提供了auto_ddl的属性,能够根据实体类自动进行DDL操作,但是对于数据的升级,例如需要插入初始数据或者修改数据库数据时,一般只能靠发布者手动执行。 flywayd

8443

OmniDrive(3):逐行代码详解

模型效果: 端到端联合规划与推理 接下来,简单介绍下训练的配置 1.1 模型配置 模型基于sparse query based的3D Bev感知框架StreamPetr ,用query来编码动态目标(如车辆、行人)和静态地图元素(如车道线)。(1) tran、test和val数据配置 指定真值的文件路径: ann_file 指定输出处理的pipeline: 训练使用, test 和val使用 指定是否需要时序训练seq_mode (2)数据处理pipeline 自定义的Dataset 通过类实现,训

@bangbang的博客 720

keil工程After Build/Rebuild添加带参.exe实现全流程(2):带参调用.exe的几种方法

keil工程After Build/Rebuild添加带参.exe实现全流程(2):带参调用.exe的几种方法。

kevin1499的博客 1617

flyway版本号_如何解决flywaydb中脚本的版本号冲突问题

I got 3 git branches: develop, fixbug, and master.The latest FlywayDB script version in branch master is 1.2.43,and the one in branch develop is 1.2.54.Branch fixbug's script version is update to 1.2....

weixin_39907596的博客 933

极智AI | 算能SC5+智算卡驱动安装与升级

大家好,我是极智视界,本文介绍一下 算能SC5+智算卡驱动安装与升级

极智视界 1277

h2数据库 org.flywaydb.core.internal.exception.FlywaySqlException: [ERROR] Unable to obtain connection

org.flywaydb.core.internal.exception.FlywaySqlException: [ERROR] Unable to obtain connection from database (jdbc:h2:~/project) for user 'sa': Wrong user name or password [28000-200] 给同学改bug,这个错我之前报...

一只小仙女的博客 3234

VisionTransformer改进(11):结合CoordAtt注意力机制

​​CoordAtt模块​​:一个轻量级的坐标注意力机制​​ViT模型​​:基于标准Vision Transformer架构,但集成了CoordAtt模块模型最终通过CNNModel函数封装,虽然名称是CNN,但实际上是一个Transformer模型。引入了轻量级的CoordAtt注意力机制,增强了模型对空间位置信息的捕捉能力保持了ViT的主要优势,同时通过注意力机制提升了特征表示能力设计简洁高效,适合作为基础模型进行进一步研究和应用。

2401_82355416的博客 701

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Springboot集成flywaydb(以及解决加载顺序问题)

一、Springboot集成flywaydb 引入依赖 <dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> <version>5.0.3</version> </dep...

qq_33366098的博客 5176

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

liquibase与flywaydb的使用示例,并进行比对

如果你需要更高级的数据库变更功能和更复杂的操作支持,Liquibase可能是更好的选择。Liquibase使用基于标签的迁移策略,每个变更集可以使用唯一的标签进行标识,Liquibase根据标签的顺序执行变更集,但不会自动跟踪已执行的变更集。:Liquibase和FlywayDB都有活跃的开源社区支持,并且都有广泛的生态系统。Liquibase的配置文件更结构化,而FlywayDB的配置文件更简单直观。FlywayDB专注于简单的SQL脚本执行,不提供复杂的数据库操作的抽象。

学亮编程手记 871

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

flywaydb

官网:flywaydb.org 属性设置方式:迁移方式一:(提前生成好classpath:的文件,再通过导入依赖配置自动装配FlywayProperties,不适合生产环境) 设置脚本迁移目录和脚本文件: 启动服务,生成classpath:对于脚本文件 导入依赖: <dependency> <groupId>org...

github_38596081的博客 1890

liquibase与flywaydb的详细安装步骤

下载Liquibase:访问Liquibase官方网站(https://www.liquibase.org)并下载适用于你的操作系统的二进制文件。下载数据库驱动程序:根据你使用的数据库系统,下载相应的数据库驱动程序,并将驱动程序的JAR文件复制到FlywayDB的安装目录下。下载数据库驱动程序:根据你使用的数据库系统,下载相应的数据库驱动程序,并将驱动程序的JAR文件复制到Liquibase的。解压文件:将下载的二进制文件解压到你选择的目录中。解压文件:将下载的二进制文件解压到你选择的目录中。

学亮编程手记 603

flywaydb mysql_Flyway for DB

Flyway for DB1. Command Tool1.1 Command Tool with H2 DB demoFind and download the flyway-commandline-2.3.zip, unzip and put it in the working directory.>cd /opt/flyway>cd jars>wgethttp://repo...

weixin_31322465的博客 233

springboot整合h2 数据库迁移 org.flywaydb.core.api.FlywayException解决方案

[INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- flyway-maven-plugin:6.0.8:migrate (default-cli) @ nice-community --- [INFO] Flyway Community Edition 6...

smile_foreach的博客 2861

flywaydb mysql_数据库迁移框架Flyway介绍

官方文档入门示例Java代码package foobar;import org.flywaydb.core.Flyway;public class App{public static void main(String[] args){Flyway flyway = new Flyway();// 指定数据源flyway.setDataSource("jdbc:mysql://localhost/t...

weixin_33621280的博客 1797

flywaydb mysql_flyway 管理数据库版本

Flyway 和 Liquibase 都是 Java 项目中常用的 DB migration 工具, 从使用简便性看,Flyway 比 Liquibase 更简单, 从 github 的 star 数量看, flyway 更受欢迎.==============================flyway 命令行工具和 maven 插件==============================对于...

weixin_28974985的博客 549

SpringBoot使用flywaydb实现数据库版本管理【附源码】

当整个项目交给用户使用时,谁使用都不知道情况下,数据源都自己定义的情况下,我们项目升级版本,免不了有数据库文件变更的情况,这个时候,就靠本文介绍的。Flyway是一款开源的数据库版本管理工具,可以实现管理并跟踪数据库变更,支持数据库版本自动升级,而且不需要复杂的配置,能够帮助团队更加方便、合理的管理数据库变更。

笑小枫 2529

PostgreSQL:数据库迁移与版本控制

合集 - 2025/02(5)1.数据库安全管理中的权限控制:保护数据资产的关键措施02-022.应用中的 PostgreSQL项目案例02-033.Python 与 PostgreSQL 集成:深入 psycopg2 的应用与实践02-044.Node.js 与 PostgreSQL 集成:深入 pg 模块的应用与实践02-055.PostgreSQL:数据库迁移与版本控制02-06收起 ti...

weixin_41420060的博客 146

flywaydb mysql_Spring Boot教程(四十)使用Flyway来管理数据库版本

在上面的使用JdbcTemplate一文中,主要通过spring提供的JdbcTemplate实现对用户表的增删改查操作。在实现这个例子的时候,我们事先在MySQL中创建了用户表。创建表的过程我们在实际开发系统的时候会经常使用,但是一直有一个问题存在,由于一个系统的程序版本通过git得到了很好的版本控制,而数据库结构并没有,即使我们通过Git进行了语句的版本化,那么在各个环境的数据库中如何做好版本...

weixin_28965963的博客 363
上一篇: idea实用插件链接
下一篇: 多维表实践
Small_StarOne
博客等级 码龄8年 11粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值