注册 X
提交 注:点击提交后系统会发送邮件到邮箱验证!(仅支持中国大陆邮箱)
我已阅读并同意 服务条款
首页 > IT技术笔记 > 查看笔记

数据库版本管理Flyway的使用

数据库版本管理Flyway的使用

1、新建springboot项目

2、导入flyway的maven依赖

<!--引入flyway-->
<dependency>
   <groupId>org.flywaydb</groupId>
   <artifactId>flyway-core</artifactId>
   <version>6.1.0</version>
</dependency>

3、导入jdbc驱动

<!-- Mysql驱动包 -->
<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
</dependency>

4、还需要导入数据库操作持久层依赖(mybatis、jsbcTemplate等),若不导入,不会报错,项目启动也不会执行脚本

<!--        <dependency>-->
<!--            <groupId>com.github.pagehelper</groupId>-->
<!--            <artifactId>pagehelper-spring-boot-starter</artifactId>-->
<!--            <version>1.2.13</version>-->
<!--        </dependency>-->
<!--        <dependency>-->
<!--            <groupId>tk.mybatis</groupId>-->
<!--            <artifactId>mapper-spring-boot-starter</artifactId>-->
<!--            <version>1.1.5</version>-->
<!--        </dependency>-->
       <!--jdbc template -->
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-jdbc</artifactId>
       </dependency>

5、application.yml配置

spring:
 # 数据库连接配置
 datasource:
   driver-class-name: com.mysql.cj.jdbc.Driver
   url: jdbc:mysql://localhost:3306/ssm-demo?characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
   username: root
   password: 111111
 flyway:
   # 是否启用flyway
   enabled: true
   # 编码格式,默认UTF-8
   encoding: UTF-8
   # 迁移sql脚本文件存放路径,默认db/migration
   locations: classpath:db/migration
   # 迁移sql脚本文件名称的前缀,默认V
   sql-migration-prefix: V
   # 迁移sql脚本文件名称的分隔符,默认2个下划线__
   sql-migration-separator: __
   # 迁移sql脚本文件名称的后缀
   sql-migration-suffixes: .sql
   # 迁移时是否进行校验,默认true
   validate-on-migrate: true
   # 当迁移发现数据库非空且存在没有元数据的表时,自动执行基准迁移,新建schema_version表
   baseline-on-migrate: true

6、resource目录下创建db/migration目录

添加需要运行的sql脚本。sql脚本的命名规范为:V+版本号(版本号的数字间以”.“或”_“分隔开)+双下划线(用来分隔版本号和描述)+文件描述+后缀名,例如:V20211009__test.sql。

V20211008__test.sql脚本内容:

drop table if exists test;
create table test (
   id           int(11)    not null  auto_increment,
   name             varchar(200),
   data            varchar(200),
   primary key (id)
) engine=innodb auto_increment=1 default charset=utf8;

insert into test(name,data) values ('11', '22');
commit;

V20211009__test.sql脚本内容:

insert into test(name,data) values ('3242', 'fnsjkfnkdsfdks的前为你打开九七五年的');

项目结构图:

Dingtalk_20211009154125


7、启动项目。启动成功后,在数据库中可以看到已按照定义好的脚本,完成数据库变更,并在flyway_schema_history表插入了sql执行记录


		        

		      

 打赏        分享



评论

邮箱: 昵称: