springboot工程如何通过flyway实现mysql表格自动创建、更新

背景:

      在新建一个springboot工程时不想通过直接操作数据库来实现表格的创建和更新,而是直接将数据表格的操作代码放到springboot工程里面,项目运行时就会自动创建更新数据库表格。

1. 引入 flywaydb库

在pom.xml文件中引入flywaydb库,代码如下:

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

注:我的springboot版本为2.6.13 ,对应的flywaydb版本为7.15.0

2. application.yml文件中添加flywaydb配置,代码如下:

spring:
  datasource:
    url: jdbc:mysql://10.******:3306/*** #url
    username: root
    password: ro
    driver-class-name: com.mysql.cj.jdbc.Driver  #数据库链接驱动
  flyway:
    enabled: true
    baseline-on-migrate: true
    table: test_history
    encoding: UTF-8

注:如果需要查看flyway日志,可以增加如下配置:

logging:
  level:
    org.flywaydb: DEBUG

3. 添加sql文件

注: V1__init.sql  这个文件需要有,里面内容随便写一些语法正确但是非业务的sql语句,比如

select database();,因为如果没有这个文件,下面的V1__***.sql 文件就无法在数据库中被创建,原因我个人理解,是只入库变更的记录。如果有其他理解,可以一起讨论。

V2__***.sql 示例代码:

CREATE TABLE IF NOT EXISTS data_test (
      id INT(6) PRIMARY KEY AUTO_INCREMENT,
      user_id VARCHAR(64),
      insert_time DATETIME
)ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE utf8mb4_0900_ai_ci;

按照上面方式配置完成,运行springboot工程,刷新数据库,即可看到创建的表格。

注:我这边在运行遇到一个奇怪现象,记录一下,如果有知道原因的同学可以在下方评论一下

运行后发现mysql数据库中连上面第二部中定义的 tables:test_history 表格(这个表格是自动生成记录flyway日志的)都没生成出来,查了一下资料说需要在pom文件中添加jdbc依赖库,添加之后发现确实可以了,但是后来发现把这段注释掉,依然可以。。。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gr1785

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值