初见flyway

flyway (一种数据库版本控制工具 document)

两种文件 V 和 R

V: V 开头是不可重复执行的文件,每次修改完都该更改名称

R: R 开头是可重复执行的文件,需要保证内部sql都是可以重复执行的

名称格式: V__table_name.sql, R__table_name.sql

操作

baseline: 以现在数据库状态为基准,创建 flyway_schema_history表,以及相关信息填充 类似初始化

migrate: flyway根据sql的变化来进行更新

repair: 对最近的迁移失败做一次修复 类似回滚

undo: 撤销最近一次的版本升级,无论成功与否

clean: 删除表,包括 flyway_schema_history

info: 打印所有迁移的信息,包括版本变化

validate: 校验本次迁移

原理

在第一次执行flyway时候,会创建一个名为 flyway_schema_history 的表,其存放的是每次迁移的结果。

flyway在后续迁移动作时,会校验文件名称以及是否修改,然后做相应的动作。

坑

  1. 对于R文件,如果在flyway_schema_history中有记录,则不能直接删除,需要保留文件或者直接删除`flyway_schema_history`表中对该文件的所有记录 '不好'。
  2. 对于执行失败后,需要执行repair后,才能进行下一次操作,或者将`flyway_schema_history`中记录`success`改为true \[不好]
相关推荐
ly76891 小时前
PostgreSQL 备份恢复策略:pg_basebackup、WAL 归档与 PITR 在企业 Java 系统中的落地
java·数据库·postgresql·pitr·pg_basebackup·wal 归档
小羊没烦恼!2 小时前
Ajax与JSON的一些总结
android·java·前端·数据库·mysql·算法·okhttp
注塑机数据采集联网2 小时前
如何解决注塑机数据采集联网对接MES系统数据WiFi传输数据不稳问题
大数据·数据库·物联网·数据挖掘·数据分析
黄俊懿2 小时前
【架构师从入门到进阶】第六章:服务集群优化——第八节:线程数公式
java·服务器·数据库·分布式·性能优化·架构·系统架构
geovindu2 小时前
sql: JSON and XML Data Handling in SQL using mysql 9.0
数据库·sql·mysql·数据库开发
hackchen2 小时前
LangChain 学习第 3 课 - 输出解析器(Output Parser)
数据库·学习·langchain
Mortalbreeze2 小时前
MySQL 基础篇(九):从 B+ 树到索引优化,全面理解 MySQL 索引
数据库·mysql
泡海椒2 小时前
JQuick-SQL SELECT 投影:字段、别名与表达式查询
数据库·sql
猫咪很可爱3 小时前
mysqldump 失败常见场景
数据库·sql·mysql
大明二代3 小时前
从零构建 Mastra RAG MVP:DeepSeek、SiliconFlow 与 PostgreSQL/pgvector 实战
javascript·数据库·人工智能