<dependency>
<groupId>org.flywaydbgroupId>
<artifactId>flyway-coreartifactId>
<version>8.0.5version>
dependency>
# 迁移脚本的位置,默认:db/migration,可通过该配置指定脚本文件位置
spring.flyway.locations
# 开启自动创建flyway元数据表标识 默认: false
spring.flyway.baseline-on-migrate=true
格式: V + 版本号 + __ (双下划线) + 描述.sql
每条sql语句要给到明确注释, 并标明添加该sql对应时间方便后期维护
-- 新增基础数据-物料主数据表 2022.08.16
CREATE TABLE IF NOT EXISTS `material_test` (
`id` char(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键',
`code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '此物料的编码,自然键',
`name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '物料名称',
`specification` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '规格',
`type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '物料的类型。',
`unit` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '默认的计量单位',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='基础数据-物料主数据';
-- 添加初始化物料数据 2022.08.17
INSERT IGNORE INTO `material_test` (`id`, `code`, `name`, `specification`, `type`, `unit`) VALUES ('104a3ebc-325e-4d50-8ad4-66e6987d5f82', 'a', 'A物料', NULL, '01', 'kg');
INSERT IGNORE INTO `material_test` (`id`, `code`, `name`, `specification`, `type`, `unit`) VALUES ('104a3ebc-325e-4d50-8ad4-66e6987d5f84', 'b', 'B物料', NULL, '04', 'g');
-- 通过存储过程满足可重复执行sql
DROP PROCEDURE IF EXISTS initSql;
DELIMITER &&
CREATE PROCEDURE initSql()
BEGIN
-- 添加执行sql区域
-- 物料表添加更新时间字段 2022.08.17
if not exists(select * from information_schema.COLUMNS where table_name='material_test'and column_name ='update_time')then
ALTER TABLE `material_test` ADD COLUMN `update_time` datetime NULL COMMENT '更新时间' AFTER `unit`;
end if;
-- 物料表删除单位字段 2022.08.18
if exists(select * from information_schema.COLUMNS where table_name='material_test'and column_name ='unit')then
alter table `material_test` drop column `unit`;
end if;
-- 结束
END;&&
DELIMITER ;
CALL initSql();
DROP PROCEDURE initSql;
配置占位符(可自定义多个占位符)
# 自定义占位符: myParam
# 自定义参数值: value
spring.flyway.placeholders.myParam=value
开启flyway.baseline-on-migrate配置后,启动项目会自动初始化表: flyway_schema_history
# 可通过该配置指定初始化元数据表名, 默认: flyway_schema_history
spring.flyway.tableflyway=
flyway.baseline-description对执行迁移时基准版本的描述.
flyway.baseline-on-migrate当迁移时发现目标schema非空,而且带有没有元数据的表时,是否自动执行基准迁移,默认false.
flyway.baseline-version开始执行基准迁移时对现有的schema的版本打标签,默认值为1.
flyway.check-location检查迁移脚本的位置是否存在,默认false.
flyway.clean-on-validation-error当发现校验错误时是否自动调用clean,默认false.
flyway.enabled是否开启flywary,默认true.
flyway.encoding设置迁移时的编码,默认UTF-8.
flyway.ignore-failed-future-migration当读取元数据表时是否忽略错误的迁移,默认false.
flyway.init-sqls当初始化好连接时要执行的SQL.
flyway.locations迁移脚本的位置,默认db/migration.
flyway.out-of-order是否允许无序的迁移,默认false.
flyway.password目标数据库的密码.
flyway.placeholder-prefix设置每个placeholder的前缀,默认${.
flyway.placeholder-replacementplaceholders是否要被替换,默认true.
flyway.placeholder-suffix设置每个placeholder的后缀,默认}.
flyway.placeholders.[placeholder name]设置placeholder的value
flyway.schemas设定需要flywary迁移的schema,大小写敏感,默认为连接默认的schema.
flyway.sql-migration-prefix迁移文件的前缀,默认为V.
flyway.sql-migration-separator迁移脚本的文件名分隔符,默认__.
flyway.sql-migration-suffix迁移脚本的后缀,默认为.sql.
flyway.table使用的元数据表名,默认为flyway_schema_history.
flyway.target迁移时使用的目标版本,默认为latest version.
flyway.url迁移时使用的JDBC URL,如果没有指定的话,将使用配置的主数据源.
flyway.user迁移数据库的用户名.
flyway.validate-on-migrate迁移时是否校验,默认为true.