Java中使用Flyway对已有数据的数据库表进行增加字段操作

2024 年 11 月 29 日 星期五
/ , , ,
17

阅读此文章之前,你可能需要首先阅读以下的文章才能更好的理解上下文。

Java中使用Flyway对已有数据的数据库表进行增加字段操作

在写 tgDrive 的时候,突然想起自己有可能是因为在返回的 header 里没有通过 Content-Length 设置文件的大小导致在下载文件的时候显示的是恢复文件,而不是下载文件。一开始自己为了图方便并没有直接存储文件的大小,所以需要在已有数据库表上新增 full_size 字段。而我又不能自己单独操作数据库,因为这个项目是需要自部署的,我也得考虑到其他在使用这个项目的人。所以我选择使用Flyway进行数据库迁移。

方法

1. 引入依赖

  • Maven 方式:在 pom.xml 中添加 Flyway 的依赖。
<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
</dependency>
  • Gradle 方式:在 build.gradle 中添加 Flyway 的依赖。
dependencies {
    implementation 'org.flywaydb:flyway-core'
}

2.新建迁移目录和 SQL 脚本

新建 src/main/resources/db/migration 文件夹(这是 Flyway 默认的迁移目录)。然后在该文件夹下创建一个 SQL 脚本,例如:V2__AddFullSizeColumn.sql(遵循 Flyway 的命名规则):

ALTER TABLE files ADD COLUMN full_size INTEGER DEFAULT 0;

Flyway 的命名规则

Flyway 的迁移脚本文件名需要遵循特定的命名规则,以确保脚本的执行顺序正确。文件名格式如下:

V<版本号>__<描述>.sql
  • V 表示版本前缀,必须以大写字母 V 开头。
  • <版本号> 是版本的编号,例如 1, 2, 2.1 等,用于标识迁移脚本的顺序。
  • __ 是两个下划线,用于分隔版本号和描述。
  • <描述> 是对迁移内容的描述,使用下划线代替空格,例如 AddFullSizeColumn

例如:

V1__Initial_setup.sql
V2__AddFullSizeColumn.sql

3. 配置 Flyway

在 Spring 项目中,可以选择通过 application.propertiesapplication.yml 文件配置 Flyway。

  • application.yml 方式:
spring.flyway.baseline-on-migrate=true
  • application.properties 方式:
spring:
  flyway:
    baseline-on-migrate: true

4. 启动 Spring 项目

完成以上步骤后,启动 Spring 项目,Flyway 将自动执行迁移脚本,完成对数据库表的新增字段操作。

总结

通过使用 Flyway,我们可以方便地进行数据库版本控制和变更管理。我成功地为已有的数据库表 files 增加了一个新的字段 full_size,从而解决了下载文件时未正确显示的问题。使用 Flyway 不仅让数据库迁移更为规范,还能在团队协作中保证数据库变更的一致性。

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...