Flyway for Java: 完整指南及示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Flyway 简介:它是什么以及为什么需要它

\n\n

Flyway 是一个用于数据库版本控制和迁移的库(Database Migration Tool)。在现代软件开发中,尤其是在团队协作和使用 CI/CD 方法论时,同步开发人员、测试环境和生产环境之间的数据库结构变得至关重要。Flyway 通过允许将数据库模式变更(创建表、添加列、索引、触发器等等)描述为一系列有版本号的 SQL 脚本或 Java 类来解决这个问题。

\n\n

Flyway 的核心概念很简单:每个迁移都有一个唯一的版本号(例如,V1、V2、V3),并且只执行一次。该库使用一个特殊的表(默认为 flyway_schema_history)来跟踪哪些迁移已经应用于特定的数据库。这保证了数据库状态的幂等性和可重现性。

\n\n

为什么要使用 Flyway?

\n
    \n
  • 模式版本控制: 每个数据库更改都是一个单独的版本,可以回滚或应用。
  • \n
  • 自动化: 与 Maven、Gradle、Spring Boot 和 CI/CD 流水线集成。
  • \n
  • 完整性控制: Flyway 检查迁移的校验和,防止对已执行脚本的意外修改。
  • \n
  • 简单性: 对于大多数任务,只需编写一个普通的 SQL 脚本即可。
  • \n
\n\n

为 Java 安装 Flyway

\n\n

Flyway 不能通过 pip 或 npm 安装,因为它是一个 Java 库。有几种方法可以将其添加到项目中:

\n\n

1. Maven (pom.xml)

\n
<dependency>\n    <groupId>org.flywaydb</groupId>\n    <artifactId>flyway-core</artifactId>\n    <version>9.22.3</version> <!-- 编写时的最新版本 -->\n</dependency>\n\n<!-- 您的数据库驱动程序,例如 PostgreSQL -->\n<dependency>\n    <groupId>org.postgresql</groupId>\n    <artifactId>postgresql</artifactId>\n    <version>42.7.1</version>\n</dependency>
\n\n

2. Gradle (build.gradle)

\n
implementation 'org.flywaydb:flyway-core:9.22.3'\nimplementation 'org.postgresql:postgresql:42.7.1'
\n\n

3. Maven 插件(用于命令行运行)

\n
<plugin>\n    <groupId>org.flywaydb</groupId>\n    <artifactId>flyway-maven-plugin</artifactId>\n    <version>9.22.3</version>\n    <configuration>\n        <url>jdbc:postgresql://localhost:5432/mydb</url>\n        <user>myuser</user>\n        <password>mypassword</password>\n    </configuration>\n</plugin>
\n\n

4. Spring Boot(自动配置)

\n

如果您使用 Spring Boot,只需添加依赖项并在 application.properties 中配置参数:

\n
spring.flyway.enabled=true\nspring.flyway.locations=classpath:db/migration\nspring.datasource.url=jdbc:postgresql://localhost:5432/mydb\nspring.datasource.username=myuser\nspring.datasource.password=mypassword
\n\n

快速入门及代码示例

\n\n

让我们看一个在 Java 应用程序中使用 Flyway 创建 users 表的最小示例。

\n\n

步骤 1:创建迁移目录结构

\n

默认情况下,Flyway 在 classpath 的 db/migration 文件夹中查找 SQL 脚本(例如,src/main/resources/db/migration)。

\n\n

步骤 2:创建迁移文件

\n

在此文件夹中创建一个名为 V1__Create_users_table.sql 的文件:

\n
CREATE TABLE users (\n    id SERIAL PRIMARY KEY,\n    username VARCHAR(50) NOT NULL UNIQUE,\n    email VARCHAR(10                    

推荐