简单使用步骤
这里用的是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数据库的版本改成同一个版本
错误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