Flyway

官方文档

简单使用步骤

这里用的是maven项目,连接H2数据库

  • 首先要有一个maven项目

  • 然后在pom.xml里配置

    <project xmlns="...">
        ...
        <build>
            <plugins>
                <plugin>
                    <groupId>org.flywaydb</groupId>
                    <artifactId>flyway-maven-plugin</artifactId>
                    <version>6.2.0</version>
                    <configuration>
                        <url>jdbc:h2:file:./target/foobar</url>
                        <user>sa</user>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>com.h2database</groupId>
                            <artifactId>h2</artifactId>
                            <version>1.4.197</version>
                        </dependency>
                    </dependencies>
                </plugin>
            </plugins>
        </build>
    </project>
    
    

    注意这里的 h2版本为 1.4.197,对应的h2版本也必须为1.4.197,,保持一致

  • 创建目录

    src/main/resources/db/migration

  • 创建migration 文件放到migration目录下
    里面的内容是对表的相关操作

    CREATE TABLE USER
    (
      ID int AUTO_INCREMENT PRIMARY KEY NOT NULL,
      ACCOUNT_ID VARCHAR(100),
      NAME VARCHAR(50),
      TOKEN VARCHAR(36),
      GMT_CREATE BIGINT,
      GMT_MODIFIED BIGINT
    );
    

    文件名格式 V+数字+两个下划线+描述
    第一步 V1__xxxxx.sql
    第二步 V2__xxxxx.sql

  • 执行

创建表USER mvn flyway:migrate

mvn flyway:migrate
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building community 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- flyway-maven-plugin:6.2.0:migrate (default-cli) @ community ---
[INFO] Flyway Community Edition 6.2.0 by Redgate
[INFO] Database: jdbc:h2:~/community-my (H2 1.4)
[INFO] Successfully validated 1 migration (execution time 00:00.035s)
[INFO] Current version of schema "PUBLIC": << Empty Schema >>
[INFO] Migrating schema "PUBLIC" to version 1 - Create user table
[INFO] Successfully applied 1 migration to schema "PUBLIC" (execution time 00:00.047s)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.261 s
[INFO] Finished at: 2020-01-30T20:17:45+08:00
[INFO] Final Memory: 22M/225M
[INFO] ------------------------------------------------------------------------


完成

说明

  • 执行完成后会多一个表flyway_schema_history,用于记录哪些脚本文件执行了哪些没执行
  • 每多一个脚本文件,flyway_schema_history就会多一行记录
  • 日后如果想改动表结构等,原来的文件一点不能动,必须要新增一个 脚本文件 VX__xxx.sql,然后重新执行 mvn flyway:migrate
  • flyway_schema_history表有个字段checksum,是校验字段,如果已经执行过的脚本文件被修改,就会报错
  • V必须大写,否则不会执行

错误,,,导入的版本要一致

[HY000][50000] General error: "java.lang.IllegalStateException: Unable to read the page at position
我是在i使用命令:mvn flyway:migrate后产生的错误!!!

两个数据库的版本不一致

解决方法:将两个h2数据库的版本改成同一个版本img

img

错误Migration checksum mismatch for migration version 8

Validate failed:
[ERROR] Migration checksum mismatch for migration version 8
[ERROR] -> Applied to database : 297438663
[ERROR] -> Resolved locally : 216027660
[ERROR] -> [Help 1]

在执行flyway migrate之前,先执行 flyway repair,之后执行新的flyway脚本,会忽略原有的checksum值

mvn flyway:repair

参考篇

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值