• SpringBoot整合flyway


    依赖:

            <dependency>
                <groupId>org.flywaydb</groupId>
                <artifactId>flyway-core</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>
    
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>    

    约定俗成的配置:

    resource文件夹下创建db/migration文件夹,里面放入自己写的.sql文件,格式如下:

    V或者R开头(注意,必须是大写),然后版本号(数字),两个英文的下划线,接上名字再加上.sql,例如:V1.1__aa.sql

    .sql文件里面可以放入数据库导出的脚本,也可以是自己写的SQL语句。

    记得在application文件中配置好数据库的信息,驱动,用户名,密码。

    当SpringBoot启动时,文件会自动被使用。以V开头的文件会只会生效第一次,而以R开头的文件每次启动SpringBoot都会使用一次。

    当成功后可以看到数据库中有一个自动生成的名叫   flyway_schema_history  的表,这种表中的列和数据我拿一张图来解析下。

    flyway就是用flyway_schema_history这张表来记录执行信息的,当一份以V开头的文件被执行完之后会被记录到表中,而以R开头的文件因为每次启动都会执行一次,所有不会有记录到该表中。

    当V开头的文件被执行后,其被记录到表中,一般来说,除非是删除flyway_schema_history,不然是无法再次执行该V文件的,如果在后来的情况中修改了V文件导致其信息和表记录的信息不符,还会在SpringBoot启动时报错。

    单独的删除flyway_schema_history中的一列,似乎是无法正确使被执行的文件再次执行第二次的。

    当删除flyway_schema_history这张表后,所有的V或者R文件都会从头到尾再次执行一遍,这个时候可能出现某些问题(例如:表存在覆盖创建之类的,等等……),可以通过在SpringBoot进行某些设置来解决一些问题。在application文件中,以spring.flyway开头。

    这次给我感悟最深的是:约定俗成的东西是很重要的,如果格式的可能性太多,那么就直接写死一个,然后把这个方式让别人知道,就这么用。

  • 相关阅读:
    centos7 安装mysql
    Nginx安装及配置详解
    nginx安装
    JSON Web Token
    优先队列
    小程序遮罩层禁止页面滚动(遮罩层内部可以滚动)
    H5中接入微信支付
    如何使用less预编译
    在methods中使用filter
    根据当前时间获取上一个月的时间
  • 原文地址:https://www.cnblogs.com/woyujiezhen/p/13025018.html
Copyright © 2020-2023  润新知