Flyway版本:5.2.4
<dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> <version>5.2.4</version> </dependency>
在使用这个版本之前首先测试了不配置版本和配置8版本的Flyway,但是并没有像网上和书上所写的那样会自动生成Flyway记录表和SQL定义的表,最终使用了5版本的Flyway才出现效果
Flyway使用SQL来定义迁移脚本,因此在这提前准备一些SQL文件,将sql文件保存到resources/db/migration(flyway默认读取位置)
CREATE TABLE IF NOT EXISTS`mybatis`.`flyway_table` ( `id` INT NOT NULL AUTO_INCREMENT, `field_name` VARCHAR(45) NOT NULL, `field_value` VARCHAR(45) NOT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `id_UNIQUE` (`id` ASC)); INSERT INTO `mybatis`.`flyway_table` (`field_name`, `field_value`) VALUES ('flyway', 'init'); INSERT INTO `mybatis`.`flyway_table` (`field_name`, `field_value`) VALUES ('code tools', 'vscode'); INSERT INTO `mybatis`.`flyway_table` (`field_name`, `field_value`) VALUES ('connection', 'workbench'); INSERT INTO `mybatis`.`flyway_table` (`field_name`, `field_value`) VALUES ('time', 'night');
Flyway脚本名称以大写字母V开头,随后是脚本的版本号,后面跟着两个下划线和对脚本的庙是,如: V1.2__initFlyway.sql
在application.yml中添加Flyway的配置
spring: flyway: enabled: true baseline-on-migrate: true baseline-description: 学习测试 validate-on-migrate: true check-location: true locations: classpath:db/migration
如果不配置Flyway的话,在该版本的maven中会出现如下报错(因为之前看一些资料显示可以不配置Flyway):
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.api.FlywayException: Found non-empty schema(s) `mybatis` without schema history table! Use baseline() or set baselineOnMigrate to true to initialize the schema history table.
启动整个项目,启动成功后查看数据表,出现了 flyway_schema_history 和 flyway_table这两张数据表