千家信息网

springboot项目如何集成flyway

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,小编给大家分享一下springboot项目如何集成flyway,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、FlywayFlyway是独立于数据库的应用、管理并跟踪数据库变更的数
千家信息网最后更新 2026年11月01日springboot项目如何集成flyway

小编给大家分享一下springboot项目如何集成flyway,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

一、Flyway

Flyway是独立于数据库的应用、管理并跟踪数据库变更的数据库版本管理工具。用通俗的话讲,Flyway可以像Git管理不同人的代码那样,管理不同人的sql脚本,从而做到数据库同步。

二、流程

1、 首先配置好flyway的基本信息后,运行项目,会在数据库表中默认新建一个数据表用于存储flyway的运行信息,默认的数据库名:flyway_schema_history

2、 紧接着Flyway将开始扫描文件系统或应用程序的类路径进行迁移。然后,Flyway的数据迁移将基于对用sql脚本的版本号进行排序,并按顺序应用:

可以看到执行数据库表后在checksum中储存一个数值,用于在之后运行过程中对比sql文件执行是否有变化。

注意:

flyway在执行脚本时,会在源数据表中检查checksum值,并确定上次运行到哪一个脚本文件,本次执行时从下一条脚本文件开始执行。所以编写脚本的时候不要去修改原有的脚本内容,并且新的脚本版本号要连续

2.1 导入依赖

    org.flywaydb    flyway-core    org.postgresql    postgresql    runtime    org.springframework.boot    spring-boot-starter-jdbc                         org.flywaydb            flyway-maven-plugin            5.2.1             

2.2 配置yml

spring:  #druid数据源  datasource:    druid:      db-type: com.alibaba.druid.pool.DruidDataSource      driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy      url: jdbc:log4jdbc:mysql://127.0.0.1/plumvill_test?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true      username: root      password: 123456  flyway:    # 迁移脚本的位置,默认db/migration,可配置    locations: classpath:/db    # 已经存在表结构数据的已有数据库使用flyway需要设置为true,且版本号要比1大    #baseline-on-migrate: true

2.3 创建sql脚本

/db/V1__init_database.sql

sql脚本的格式:V+版本号 +双下划线+描述.sql

说明:V大写,中间是两个下划线(__)

USE plumvill_test;SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for sys_user-- ----------------------------DROP TABLE IF EXISTS `sys_user`;CREATE TABLE `sys_user`  (  `id` bigint(0) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',  `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '用户名',  `nick_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '昵称',  `gender` bit(1) NOT NULL DEFAULT b'0' COMMENT '性别(0为男默认,1为女)',) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统用户' ROW_FORMAT = Compact;-- ------------------------------ Records of sys_user-- ----------------------------INSERT INTO `sys_user` VALUES (1, 'admin', '管理员', b'0');INSERT INTO `sys_user` VALUES (2, 'test', '测试', b'1',);

2.4 启动项目

可以看到sql脚本开始执行

执行成功后可以发现数据库中多出一张flyway_schema_history 的表来记录每次脚本的执行

以后只要数据库有更新,只需要在db文件夹下创建更高版本的sql脚本(V1.x__xxx.sql,V2__xxx.sql),重启项目的时候就会自动执

行。

2.5 常见问题

1、可以基于环境变量,实现不同的环境,做不同的初始化脚本吗?
基于我们的配置中 心,可以对flyway.locations配置进行修改,不同环境的初始化脚本可以放到不同的目录下。

2、初始化数据过程会发生错误回滚?
每 一个sql 文件会有 一个单独的事物,如果单个文件中发 生错误,单个文件的操作会回滚, 比如有1、2、3个 文件,第 二个文件发生错误,第二个文件所有操作将会回滚,第三个文件不会执行。但: Unfortunately, today only DB2, PostgreSQL, Derby, EnterpriseDB and to a certain extent SQL Server support DDL statements inside a transaction。 所以,建议不要把ddl 文件和dml语句句放到同 一个文件 里,避免不必要的麻烦

看完了这篇文章,相信你对"springboot项目如何集成flyway"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

数据 脚本 文件 数据库 版本 项目 管理 配置 运行 环境 错误 应用 不同 下划线 信息 单个 数据表 时候 用户 篇文章 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 华服互联网科技靠谱吗 河南云网互联网络科技有限公司 河南真二互联网科技有限公司 互联网科技革命 奔汉互联网科技 互联网科技博客 农村开互联网科技讲堂 新华互联网科技2019 随着互联网科技发展 南平创想时代互联网科技有限公司 消费医药和互联网科技 中国科技创新与世界互联网大会 无锡工业互联网科技有限公司 互联网公司高科技产品 启辰互联网科技 互联网与数字科技关系 郑州欣桑互联网科技有限公司 云南互联网科技学费 科技互联网专业工作会议发言稿 恒生科技互联网指数十大成分股 互联网黑科技 广东万易互联网科技有限公司惠州分公司 深圳互联网科技公司 以房互联网科技 左右互联网络科技 互联网科技创新企业排名 互联网科技实习生岗位职责 互联网和黑科技的看法 语蝶互联网科技有限公司 无锡工业互联网科技有限公司
0