当前位置: 代码网 > it编程>编程语言>Java > SpringBoot中使用Flyway进行数据库迁移的详细流程

SpringBoot中使用Flyway进行数据库迁移的详细流程

2025年02月17日 Java 我要评论
概要在 spring boot 项目开发中,数据库的变更不可避免。手动执行 sql 脚本不仅容易出错,也难以维护数据库版本的一致性。flyway 作为一款轻量级的数据库迁移工具,能够帮助我们优雅地解决

概要

在 spring boot 项目开发中,数据库的变更不可避免。手动执行 sql 脚本不仅容易出错,也难以维护数据库版本的一致性。flyway 作为一款轻量级的数据库迁移工具,能够帮助我们优雅地解决这些问题。

spring boot 集成 flyway

1、添加 flyway 依赖

 <dependency>
     <groupid>org.flywaydb</groupid>
     <artifactid>flyway-core</artifactid>
     <version>6.1.0</version>
 </dependency>

2、配置 flyway

spring:
  flyway:
    enabled: true
    locations: classpath:db/migration
    baseline-on-migrate: true
    placeholder-replacement: false
  datasource:
    driver-class-name: com.mysql.cj.jdbc.driver
    url: jdbc:mysql://localhost:3306/my_info?useunicode=true&characterencoding=utf8&autoreconnect=true&allowmultiqueries=true&usessl=false
    username: root
    password: iuowiebd

3、创建数据库迁移脚本

flyway 使用 sql 脚本来定义数据库的变更。脚本需要放在 src/main/resources/db/migration 目录下(默认路径),并且遵循特定的命名规则:v<版本号>__<描述>.sql

例如:v1__create_user_table.sql

create table user
(
    id    int primary key auto_increment,
    name  varchar(255) not null,
    email varchar(255) not null
);

insert into user (name, email)
values ('user1', 'user1@qq.com');

4、启动应用
启动 spring boot 应用,flyway 会自动执行 db/migration 目录下的迁移脚本,并将执行记录存储在 flyway_schema_history 表中。

控制台关于 flyway 的日志信息:

在这里插入图片描述

成功创建表:

在这里插入图片描述

flyway 其他用法

1、 禁用 flyway 自动迁移

在某些场景下,可能需要手动控制 flyway 的迁移,可以禁用自动迁移:

spring:
  flyway:
    enabled: false

bug错误

flyway版本不兼容

如果使用的 flyway 版本与 spring boot 版本不兼容,可能会导致 flyway 无法正常工作。

控制台不打印任何关于 flyway 的日志。

数据库存在表了

数据库存在表了,就不会执行 sql 了。

flyway 只会执行比当前数据库版本号更高的迁移脚本。如果数据库的当前版本是 1,而你的迁移脚本的版本号也是 1 或者更低,flyway 会认为这些脚本已经执行过,因此不会再次执行。

所以只需把 sql 脚本的版本改一下,v2__create_user_table.sql(升高版本)

flyway 的校验和(checksum)不匹配

我先启动项目,数据库迁移成功,然后我改动了sql文件,就报错:

在这里插入图片描述

如果本地迁移脚本的内容发生了更改(例如,修改了 sql 脚本),flyway 会检测到校验和不匹配,从而抛出此错误。

以上就是springboot中使用flyway进行数据库迁移的详细流程的详细内容,更多关于springboot flyway数据迁移的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com