flyway在Windows下安装及基本使用

news2024/9/20 1:10:51

文章目录

  • 1. flyway中的SQL脚本命名
  • 2. flyway执行SQL脚本演示
  • 3. flyway中设置 ${CURRENT_DATE} 为当前时间的值

Flyway是一个开源的数据库迁移工具,用于管理和自动化数据库架构的演进。它允许开发人员和团队对数据库进行版本控制,并通过简单的命令行或脚本化操作管理数据库结构和数据的变更。

  • 官网下载:https://flywaydb.org/download
  • 这里下载的是社区免费版,flyway也提供了专业版和社区版,都是收费的
  • 下载完成后配置好对应的环境变量:flyway -v
    在这里插入图片描述

1. flyway中的SQL脚本命名

  • 在Flyway中,SQL脚本的命名遵循一定的规则。通常,脚本文件的命名由以下组成:

1、版本号(Version):版本号是指脚本的唯一标识符,用来指示脚本在迁移序列中的顺序。它通常是一个数字或者包含数字的字符串,并且按照一定的命名约定进行排序,例如使用前缀"V"或者"R"加上版本号,如"V1_1"或"R2.0.3"。

2、描述性名称(Description):描述性名称是可选的,但它可以帮助更好地理解脚本的目的和功能。描述性名称通常用下划线或连字符分隔单词,例如"create_table_users"或"add_column_to_orders".

3、文件扩展名(Extension):脚本文件的扩展名通常为.sql,表示它是一个SQL脚本文件。

在这里插入图片描述

V1_1__create_table_users.sql
R2.0.3__add_column_to_orders.sql
  • Flyway对于版本号的排序是基于字典顺序的,选择一种适合项目需求的版本号命名约定,以确保脚本按正确的顺序执行

2. flyway执行SQL脚本演示

  • 如下演示批量执行mysql的脚本,准备好的SQL脚本:
ALL_0_1110__xxx.sql
ALL_1_1_130__xxx.sql
ALL_1_1_131__xxx.sql
  • 对应的脚本路径:
E:\xdr project\mysql\all-sql
  • 执行以下flyway命令,表示在对应的数据库中执行上述脚本
flyway -locations="filesystem:E:\xdr project\mysql\all-sql", -driver=com.mysql.jdbc.Driver -url=jdbc:mysql://127.0.0.1:3306/test_flyway -user=root -password=root migrate
  • 注意:filesystem 对应的路径的路径要用 " " ,不然有点时候识别不了路径
  • 或者不用上面配置的执行路径和driver、url、password,直接在flyway安装包根路径下的 conf 目录下 flyway.conf,里面有对应的:
    在这里插入图片描述
flyway.url=jdbc:mysql://127.0.0.1:3306/test_flyway
flyway.driver=com.mysql.jdbc.Driver
flyway.user=root
flyway.password=root
flyway.locations=filesystem:\\E:\xdr project\mysql\all-sql
  • Windows下的 locations 建议这样配置,有的时候很容易识别不了路径

  • 配置好数据源信息后,执行命令,效果也是和上面一样的:

flyway migrate
  • 最后查看mysql数据库中是否创建了脚本中的表或数据

3. flyway中设置 ${CURRENT_DATE} 为当前时间的值

  • 执行上述脚本的时候发现一个问题,脚本中包含执行的时候报错:
insert into xdr_info(a, b) 
values('filemanage','${CURRENT_DATE}');
  • 报错信息:
${CURRENT_DATE}.  Check your configuration!
Caused by: No value provided for placeholder: ${CURRENT_DATE}.  Check your configuration!
  • Flyway 是一个数据库迁移工具,会根据其自身的配置和规则来解析和执行 SQL 脚本。对于占位符 ${CURRENT_DATE},Flyway 需要通过配置文件或命令行参数提供具体的值。如果没有为该占位符提供值,Flyway 将无法解析。
  • 需要在 flyway.conf 中配置 ${CURRENT_DATE},如:
flyway.placeholders.CURRENT_DATE=${java.time.LocalDateTime.now()}
  • 或者直接在执行命令的时候加上
flyway -placeholders.CURRENT_DATE=$(date +%Y-%m-%d) migrate
  • 这里演示的是mysql脚本执行,flyway工具可以和市面上大部分常见的数据库配合使用,对应的驱动啥的也不用单独再下载,都是flyway的安装包下就有

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/660392.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据库与身份认证】课程笔记

目标: 知道如何配置MySQL数据库环境认识并使用常见的SQL语句操作数据库在Express中操作MySQL数据库了解Session的实现原理了解JWT的实现原理 目录: 数据库的基本概念安装并配置MySQLMySQL的基本使用在Express中操作MySQL前后端的身份认证 一. 数据库的…

美团一面:OOM后,JVM一定会退出吗?为什么?

说在前面 在40岁老架构师 尼恩的读者社区(50)中,最近有小伙伴拿到了一线互联网企业如美团、拼多多、极兔、有赞、希音的面试资格,遇到一几个很重要的面试题: OOM后,JVM一定会退出吗?为什么? 生产环境&am…

MIT 6.S081 (BOOK-RISCV-REV1)教材第四章内容 -- 上

MIT 6.S081 教材第四章内容 -- 上 引言陷阱指令和系统调用RISC-V陷入机制代码:调用系统调用从用户空间陷入系统调用参数补充 引言 MIT 6.S081 2020 操作系统 本文为MIT 6.S081课程第四章教材内容翻译加整理。 本课程前置知识主要涉及: C语言(建议阅读C程序语言设计…

Django基础入门⑤:模板变量和标签的使用

Django基础入门④:数据表显示和Django模板详讲 模板变量使用模板变量模板标签if标签for标签forloop变量forloop.revcounter 示例forloop.first 和 forloop.last 示例forloop.parentloop 示例 🏘️🏘️个人简介:以山河作礼。 &…

Liunx开发工具:git和gdb

目录 一. git的功能和使用 1.1 git的功能 1.2 git三板斧 1.3 git使用中的其他问题 二. 使用gdb调试代码 2.1 生成带有调试信息的可执行程序 2.2 gdb调试代码的方法 一. git的功能和使用 1.1 git的功能 git是一块开源、免费的版本管理系统,能够高效敏捷地处…

【人工智能】— 神经网络、前向传播、反向传播、梯度下降、局部最小值、多层前馈网络、缓解过拟合的策略

【人工智能】— 神经网络、前向传播、反向传播 前向传播反向传播梯度下降局部最小值多层前馈网络表示能力多层前馈网络局限缓解过拟合的策略 前向传播和反向传播都是神经网络训练中常用的重要算法。 前向传播是指将输入数据从输入层开始经过一系列的权重矩阵和激活函数的计算后…

计算机网络408大题(2009-2019)

必备结构 TCP报文段结构 IP数据报结构 2009年 考察点:子网划分、路由表、路由聚合 2010年 考察点:CSMA/CD协议的相关计算 2011年 考察点:以太网帧格式、IP分组格式、IP地址和MAC地址、ARP协议、HTTP/1.1持续的非流水方式 在转发过程中&am…

Jupyter中使用Pyecharts绘制地图

背景:根据各省频率绘制地图 根据各省频率绘制地图,可以使用 Pyecharts 绘制。下面是详细的步骤: 1、安装 Pyecharts:可以通过 !pip install pyecharts 命令安装。 2、导入相关库 import pandas as pd from pyecharts import o…

设计模式之抽象工厂模式笔记

设计模式之抽象工厂模式笔记 说明Abstract Factory(抽象工厂)目录UML抽象工厂示例类图甜品抽象类甜品提拉米苏类甜品抹茶慕斯类 咖啡抽象类美式咖啡类拿铁咖啡类 甜品工厂接口美式风味的甜品工厂意大利风味的甜品工厂 测试类模式扩展 说明 记录下学习设计模式-抽象工厂模式的写…

SSMP整合案例(2) Spring Boot整合Lombok简化实体类开发

好啊 接着我们上文SSMP整合案例(1) 构建 Spring Boot Vue MySql项目环境 我们继续 接下来 我们要在java项目中 建立出数据库表对应的实体类 我们还是先看看自己上文中 创建的这个 book表 其中四个字段 主键id 数字枚举类型的type 字符串类型name 字符串类型 description 我们…

【设计模式与范式:总结型】74 | 总结回顾23种经典设计模式的原理、背后的思想、应用场景等

到今天为止,23 种经典的设计模式已经全部讲完了。咱们整个专栏也完成了 3/4,马上就要进入实战环节了。在进入新模块的学习之前,我照例带你做一下总结回顾。23 种经典设计模式共分为 3 种类型,分别是创建型、结构型和行为型。今天&…

Floyd 判圈算法(Floyd Cycle Detection Algorithm)

Floyd 判圈算法(Floyd Cycle Detection Algorithm) 前言 Floyd判圈算法属于对指针操作的算法,它一般需要且仅需要两个指针,通过设定不同的指针移动速度,来判定链表或有限状态机中是否存在环。人为规定移动较快的指针称为快速指针(fast poin…

Java官方笔记9Lambda表达式

Lambda Expression 有了Lambda Expression,就不用再写anonymous classes。 写Lambda,首先要找到它的类型。 There is a restriction on the type of a lambda expression: it has to be a functional interface. 函数接口,只有1个抽象方法的接…

Vue中v-text、v-html、v-on的基本语法(二)

文章目录 前言一、vue中data属性定义对象、数组相关数据二、v-text、v-html指令使用三、v-on基本指令使用(一)四、v-on指令基本使用(二)之在函数中获取vue实例本身this五、v-on指令基本使用(二)之在函数中传递参数六、v-on指令基本使用(二)之简化写法绑定函数和事件定义的两种写…

从零搭建一台基于ROS的自动驾驶车-----2.运动控制

系列文章目录 北科天绘 16线3维激光雷达开发教程 基于Rplidar二维雷达使用Hector_SLAM算法在ROS中建图 Nvidia Jetson Nano学习笔记–串口通信 Nvidia Jetson Nano学习笔记–使用C语言实现GPIO 输入输出 Autolabor ROS机器人教程 从零搭建一台基于ROS的自动驾驶车-----1.整体介…

Unreal 5 实现丧尸伤害和死亡

这一篇主要是实现玩家攻击丧尸可以造成伤害和自身血量为零时,丧尸可以死亡。丧尸也可以对玩家造成伤害,有攻击范围的判定。 这一篇的功能实现有四个功能: 丧尸被攻击掉血丧尸死亡处理玩家被攻击掉血玩家死亡处理 丧尸被攻击掉血 子弹的修改…

C语言内存操作函数,memcpy的使用和模拟实现,memmove的使用和模拟实现,memcmp的使用,memset的使用。

1.memcpy 函数原型: void *memcpy( void *dest, const void *src, size_t count );void *dest 目标数据首元素地址const void *src 源数据(需要拷贝过去的数据)size_t count 需要拷贝数据的字节大小void *memcpy 拷贝结束后,返回目标数据的起始地址 函…

【简单的图像信息展示应用程序】PYQt5

写在前面的话 这段代码的作用是创建一个简单的图像信息展示应用程序,用户可以点击按钮查看特定文件夹中图像的文件名、大小,并通过查看按钮查看图像。请注意,文件夹路径需要根据实际情况进行修改。 代码讲解 这段代码是使用PyQt5库创建一个…

特征选择:过滤法,嵌入法,包装法

特征选择时首先要去除冗余特征。 它是由其他其他的特征中推演出来的。比如,一个球的体积,那么半径这个特征就是冗余的,因为我们可以由球的体积推算半径。冗余特征在很多时候都是不起作用的 过滤法 过滤方法通常用作预处理步骤,特…

c++11 标准模板(STL)(std::basic_ios)(三)

定义于头文件 <ios> template< class CharT, class Traits std::char_traits<CharT> > class basic_ios : public std::ios_base 类 std::basic_ios 提供设施&#xff0c;以对拥有 std::basic_streambuf 接口的对象赋予接口。数个 std::basic_ios…