数据库迁移工具(一)

数据库迁移工具(一)

Flyway定义数据库的迁移

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这两张数据表数据库迁移工具(一)

上一篇:2021-08-30


下一篇:数据库设计完善版