springboot集成flyway的终极奥秘

springboot集成flyway的终极奥秘

安装依赖包

安装最新定版上一个即可,其余也可以版本自行选取。涉及到一些安装包

springboot相关
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
flyway相关
         <dependency>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-core</artifactId>
            <version>5.2.4</version>
        </dependency>
        <dependency>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-mysql</artifactId>
            <version>10.14.0</version>
        </dependency>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <version>8.3.0</version>
        </dependency>
   build相关
          <plugins>
            <plugin>
                <groupId>org.flywaydb</groupId>
                <artifactId>flyway-maven-plugin</artifactId>
                <version>5.2.1</version>
            </plugin>
        </plugins>
  最重要的一点不能忘记,项目上扫描的路径需要配置,这个不配置你懂得,
让你怀疑人生。最重要的一个就是"**/*.*",其实有这个配置就行了,其余可以忽略,因为要扫描你的文件。
           <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.yml</include>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                    <include>**/*.*</include>
                </includes>
                <filtering>false</filtering>
            </resource>

需要配置相关参数

在yml配置文件中添加flyway相关参数。

spring:
  # 数据源配置
  datasource:
    druid:
      # 主库数据源
      master:
        driverClassName: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/数据库名称?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
        username: 账号
        password: 密码
  flyway:
    enabled: true
    table: schema_version #数据表命名
    locations: classpath:db # 配置 SQL-based 的 SQL 脚本在该目录下
    check-location: false # 是否校验迁移脚本目录下。如果配置为 true ,代表需要校验。此时,如果目录下-没有迁移脚本,会抛出 IllegalStateException 异
    # 避免带${}sql执行失败
    placeholder-prefix: '#('
    placeholder-suffix: )
    # 是否关闭要清除已有库下的表功能,生产环境必须为true,否则会删库
    clean-disabled: true

flyway提供了一些默认项,可以添加到配置项上面进行修改,但是我感觉没必要,使用默认即可,最后格式:V1.1__内容.sql
网上找了一些flyway的配置项供参考,想学习的可以网上学一下。

flyway.baseline-description对执行迁移时基准版本的描述.
flyway.baseline-on-migrate当迁移时发现目标schema非空,而且带有没有元数据的表时,是否自动执行基准迁移,默认false.
flyway.baseline-version开始执行基准迁移时对现有的schema的版本打标签,默认值为1.
flyway.check-location检查迁移脚本的位置是否存在,默认false.
flyway.clean-on-validation-error当发现校验错误时是否自动调用clean,默认false.
flyway.enabled是否开启flywary,默认true.
flyway.encoding设置迁移时的编码,默认UTF-8.
flyway.ignore-failed-future-migration当读取元数据表时是否忽略错误的迁移,默认false.
flyway.init-sqls当初始化好连接时要执行的SQL.
flyway.locations迁移脚本的位置,默认db/migration.
flyway.out-of-order是否允许无序的迁移,默认false.
flyway.password目标数据库的密码.
flyway.placeholder-prefix设置每个placeholder的前缀,默认${.
flyway.placeholder-replacementplaceholders是否要被替换,默认true.
flyway.placeholder-suffix设置每个placeholder的后缀,默认}.
flyway.placeholders.[placeholder name]设置placeholder的value
flyway.schemas设定需要flywary迁移的schema,大小写敏感,默认为连接默认的schema.
flyway.sql-migration-prefix迁移文件的前缀,默认为V.
flyway.sql-migration-separator迁移脚本的文件名分隔符,默认__
flyway.sql-migration-suffix迁移脚本的后缀,默认为.sql
flyway.tableflyway使用的元数据表名,默认为schema_version
flyway.target迁移时使用的目标版本,默认为latest version
flyway.url迁移时使用的JDBC URL,如果没有指定的话,将使用配置的主数据源
flyway.user迁移数据库的用户名
flyway.validate-on-migrate迁移时是否校验,默认为true

其中配置文件里面需要注意下

1. locations: classpath:db ,这里需要再resources文件下创建db文件夹,
此文件对应这里的配置,如果想要配置别的文件夹,那就修改配置就好了,
该文件夹下方你修改的sql文件就行,这样提交代码时别人拉取代码后,
运行项目如果没有运行过的sql项,目会帮你运行的,
这样不用担心各位小伙伴的数据库不一致了。
2. db文件里面的sql也是有说法的,既然有版本的概念那就一定要遵守办的写法,
 - V只能执行一次脚本,如果有变动可以在添加版本 ;
 - R开头可以执行多次,并且R下面不用添加版本号,那样项目会报错的。
 - 在flyway参数默认的情况下一定要记住要用双下划线__
还有一些注意事项在项目使用中慢慢领会吧,这里只是入门,修行还得看个人。

R后面添加版本号的提示
在这里插入图片描述

启动项目

项目出现这段文字证明启动成功了
在这里插入图片描述

数据库的变化

项目启动时数据库会新增一张表,schema_version,表名根据上面配置来定义,里面会记录一些执行结果
在这里插入图片描述
好了,运行正常而且也能运行sql,表里面也记录sql脚本的命令以及内容。

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值