对于多环境的应用,这样手把手去操作就比较麻烦了,而且还有可能会出错,如果我们使用数据库版本管理工具进行自动迁移和数据填充,就可以直接适配到 N 多个环境,再也不用去担心每个环境数据库结构的差异。
依赖
首先,我们需要先引入 Flyway
的依赖,大家也可以到这里去查找版本:https://mvnrepository.com/artifact/org.flywaydb/flyway-core
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>7.1.1</version>
</dependency>
配置
我们需要在 application.yml
中开启自动迁移配置:
spring:
flyway:
baseline-on-migrate: true
clean-disabled: true
开启以上配置,会在数据库中自动创建名为 flyway_schema_history
的表,已记录迁移数据和状态。
表文件规则
默认 DDL 的 SQL 文件读取位置为 /resource/db/migration
下,你也可以使用 spring.flyway.locations
进行自定义设定;
然后我们在此目录下新增 DDL/DML 文件即可,不过有几点需要注意:
- 数据表以
Vx.x.x__
开头,其中x.x.x
代表版本号,你可以为x.x
或者x
,这都是没问题的;比如V2.0.0
的新增用户表即为V2.0.0__create_user_ddl.sql
- 以
Rx.x.x__
开头的文件会重复执行,如果你修改了此文件则会进行执行,无修改则不会执行。 - 以
Vx.x.x__
开头的文件一旦执行成功,便不允许再进行任何修改,不然会出现启动异常。 - 版本号应该全局唯一的,不然会抛出异常提示有重复的版本,建议递增处理。
另外,如果是基础表结构可以直接名为V1.0.0__init.sql
,这样就会在没有数据表的环境中执行创建并初始化表结构。
声明:本文为原创文章,版权归沃付网络所有,欢迎分享本文,转载请保留出处!