简介:
Flyway 是一个敏捷工具,用于数据库的移植。本文仅仅演示使用以及大概代码执行流程,按照本文创建代码,运行项目,默认会执行migration下sql。
环境:
flyway5.2.4+springboot2.7.12+mysql8.0.32+jdk1.8+idea2021.1
代码:
-
pom
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.12</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.zte</groupId> <artifactId>flyway</artifactId> <version>0.0.1-SNAPSHOT</version> <name>flyway</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency> <!--flywaydb--> <dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> <version>5.2.4</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.2</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> <plugin> <groupId>org.flywaydb</groupId> <artifactId>flyway-maven-plugin</artifactId> <version>5.2.4</version> <configuration> <url>jdbc:mysql://localhost:3306/flyway-demo?characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai </url> <user>root</user> <password>root</password> <driver>com.mysql.cj.jdbc.Driver</driver> </configuration> </plugin> </plugins> </build> </project>
application.yml
spring: servlet: multipart: max-file-size: 10MB max-request-size: 10MB datasource: hikari: username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver connection-timeout: 20000 idle-timeout: 300000 minimum-idle: 30 maximum-pool-size: 100 max-lifetime: 1200000 auto-commit: true url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&allowMultiQueries=true flyway: #开启 enabled: true #当迁移时发现目标schema非空,而且带有没有元数据的表时,是否自动执行基准迁移,默认false. baseline-on-migrate: true # 迁移sql脚本文件名称的前缀,默认V sql-migration-prefix: V # 迁移sql脚本文件名称的分隔符,默认2个下划线__ sql-migration-separator: __ sql-migration-suffixes: .sql # 检测迁移脚本的路径是否存在,如不存在,则抛出异常 #sql脚本位置 locations: classpath:db/migration #是否允许无序的迁移,默认false out-of-order: false #编码 encoding: UTF-8 fail-on-missing-locations: true server: port: 8888
resoucres:
-
目录中,db/migration 放入sql文件,命名类似:V1__create_ddl_user.sql,V是前缀,1是版本号,可以1.1.1类似,注意`__`是两个下划线,后面的create_ddl_user仅仅是描述符,可以随意定义,不参与解析。
-