快速开始

以下基于 Spring Boot 整合 Flyway 进行说明。

  1. 添加依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
    <version>5.2.4</version>
</dependency>

<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <scope>runtime</scope>
</dependency>
  1. 配置
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql:///mytest?useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: 123456
  flyway:
    enabled: true
    # sql 文件存放路径
    locations: classpath:sql/
    table: APP_SCHEMA_HISTORY
    out-of-order: true
    clean-disabled: true
    baseline-on-migrate: true
    baseline-version: 1
    validate-on-migrate: false
    placeholder-replacement: false
    url: jdbc:mysql:///mytest?useSSL=false&serverTimezone=Asia/Shanghai
    user: root
    password: 123456
  1. SQL 文件
  • classpath:sql/V1_2024/V1_202412/V1.20241203.01__MY_APP.sql
-- 需要把 SQL 文件放在 `src/main/resources/sql/**` 目录下
create table tb_user (
    id int not null,
    user_name varchar(50),
    age int,
    primary key (id)
);

insert into tb_user(id, user_name, age) values (1, 'zs', 13);
  • classpath:sql/V1_2024/V1_202412/V1.20241203.02__MY_APP.sql
insert into tb_user(id, user_name, age) values (2, 'ww', 15);
  • classpath:sql/V1_2025/V1_202501/V1.20250101.01__MY_APP.sql
alter table tb_user add column email varchar(50);

insert into tb_user(id, user_name, age, email) values (3, 'zl', 16, 'daijunfeng.me@qq.com');

做完上面的操作之后,启动应用。Flyway 会自动执行 SQL 文件中的脚本,并在数据库中创建 MY_SCHEMA_HISTORY 表来记录迁移历史。