searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Flyway

2023-10-31 02:53:50
9
0

一、Maven依赖

<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
注意jdbc依赖:引入spring-jdbc为了启用数据源的自动配置
 

二、定义脚本

1. 脚本路径

  • 默认路径为:src/main/resources/db/migration
  • 自定义脚本位置,可以多个,可以给不同环境配置不同位置
     spring.flyway.locations=classpath:db/migration,classpath:test/db/migration
  • 对应脚本路径不存在时,则不会生成Flyway对象,不会执行数据库脚本,例如:使用默认路径时,若`src/main/resources/db/migration`文件夹不存在,则不会生成Flyway对象,自动注入为null
      @Autowired
      private Flyway flyway;

2. 脚本格式

  • V
    • V+版本号(从1开始)+双下划线+描述+结束符:V1.0.0.2023__init.sql
    • 前缀为V的脚本不可重复执行,只会执行一次,已经执行过的历史版本脚本不能再修改,除非清除flayway的历史记录,重新执行升级脚本
  • R
    • R+双下划线+描述+结束符:R__app_init.sql
    • 前缀为R的脚本,后面无版本号,可以重复执行,每次内容发生变化时重启后就会执行

 三、迁移时数据库非空

  • 启动失败,报错:Caused by: org.flywaydb.core.api.FlywayException: Found non-empty schema(s) `app` without metadata table! Use baseline() or set baselineOnMigrate to true to initialize the metadata table.
  • 解决方案:添加以下配置
    ## 当迁移时,数据库非空且没有元数据表时,自动执行baseline
    spring.flyway.baseline-on-migrate=true

 

0条评论
0 / 1000
y****n
2文章数
0粉丝数
y****n
2 文章 | 0 粉丝
y****n
2文章数
0粉丝数
y****n
2 文章 | 0 粉丝
原创

Flyway

2023-10-31 02:53:50
9
0

一、Maven依赖

<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
注意jdbc依赖:引入spring-jdbc为了启用数据源的自动配置
 

二、定义脚本

1. 脚本路径

  • 默认路径为:src/main/resources/db/migration
  • 自定义脚本位置,可以多个,可以给不同环境配置不同位置
     spring.flyway.locations=classpath:db/migration,classpath:test/db/migration
  • 对应脚本路径不存在时,则不会生成Flyway对象,不会执行数据库脚本,例如:使用默认路径时,若`src/main/resources/db/migration`文件夹不存在,则不会生成Flyway对象,自动注入为null
      @Autowired
      private Flyway flyway;

2. 脚本格式

  • V
    • V+版本号(从1开始)+双下划线+描述+结束符:V1.0.0.2023__init.sql
    • 前缀为V的脚本不可重复执行,只会执行一次,已经执行过的历史版本脚本不能再修改,除非清除flayway的历史记录,重新执行升级脚本
  • R
    • R+双下划线+描述+结束符:R__app_init.sql
    • 前缀为R的脚本,后面无版本号,可以重复执行,每次内容发生变化时重启后就会执行

 三、迁移时数据库非空

  • 启动失败,报错:Caused by: org.flywaydb.core.api.FlywayException: Found non-empty schema(s) `app` without metadata table! Use baseline() or set baselineOnMigrate to true to initialize the metadata table.
  • 解决方案:添加以下配置
    ## 当迁移时,数据库非空且没有元数据表时,自动执行baseline
    spring.flyway.baseline-on-migrate=true

 

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0