必须的依赖:
<!-- flyway依赖 --> <dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> <version>5.2.4</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- spring操作jdbc数据库依赖 --> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jdbc --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jdbc</artifactId> </dependency>
配置:
spring: flyway: enabled: true ## 编码格式,默认UTF-8 encoding: UTF-8 ## 迁移sql脚本文件存放路径,默认db/migration locations: classpath:db/migration ## 迁移sql脚本文件名称的前缀,默认V sql-migration-prefix: V ## 迁移sql脚本文件名称的分隔符,默认2个下划线__ sql-migration-separator: __ ## 迁移时是否进行校验,默认true validate-on-migrate: true ## 将schema_version表从数据库删除后抛出异常 ## Caused by: org.flywaydb.core.api.FlywayException: ## Found non-empty schema(s) `nmg-crm` without metadata table! ## Use baseline() or set baselineOnMigrate to true to initialize the metadata table. ## 设置为true,当迁移发现数据库非空且存在没有元数据的表时,自动执行基准迁移,新建schema_version表 baseline-on-migrate: true table: schema_version datasource: driver-class-name: com.mysql.jdbc.Driver username: root password: 123 url:
脚本位置:
常见错误:
- 修改了跑过的脚步:checksum机制,所以最好是保证没有被修改;
- 脚本报错:将错误的版本删除掉,再次启动;