flyway在Windows下安装及基本使用

举报
兮动人 发表于 2023/06/29 21:37:03 2023/06/29
【摘要】 flyway在Windows下安装及基本使用

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

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

image.png

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,里面有对应的:

image.png

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的安装包下就有
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。