官网地址
flyway和liuqiubase对比
为什么使用flyway?
进行数据库版本管理,迁移,摆脱人工手动执行脚本或者手动更改数据库字段的尴尬(特别是数据库比较多的时候).
使用背景
在做一个框架平台的时候,因为多个项目和平台并行开发,导致平台每次进行版本升级的时候需要兼顾n多数据库的更新.
flywaydb的命名规则
如:V1__2014_4_13.sql ,V开头+版本号+双下划线+描述,描述中可以有下划线,后缀为sql.
支持的数据库
目前Flyway支持的数据库还是挺多的,包括:Oracle, SQL Server, SQL Azure, DB2, DB2 z/OS, MySQL(including Amazon RDS), MariaDB, Google Cloud SQL, PostgreSQL(including Amazon RDS and Heroku), Redshift, Vertica, H2, Hsql, Derby, SQLite, SAP HANA, solidDB, Sybase ASE and Phoenix
默认版本记录表
schema_version
相关命令
清空数据库(慎用,会删除所有的数据库对象,包括表/视图/存储过程...),可以执行以下语句:
flyway clean
如果想恢复最新版本数据库结构,可以先清空数据库,再执行以下语句:
flyway migrate
如果想恢复特定版本数据库结构,可以先清空数据库,再执行以下语句:
flyway migrate -target=1.0.1.002
如果想查看当前数据库状态信息,可以执行以下语句:
flyway info
Flyway还有validate,baseline,repair等命令,并且支持Maven
Maven使用示例
org.flywaydb
flyway-maven-plugin
5.2.4
jdbc:mysql://localhost:3306/20190124
portals
java
true
true
false
UTF-8
fsl_schema_version
db/migration/
mvn flyway:migrate
或者命令指定数据库
true
org.flywaydb
flyway-maven-plugin
5.2.4
${flyway}
update
process-resources
${db.url}
${db.user}
${db.password}
true
true
false
UTF-8
fsl_schema_version
db/migration/
migrate
执行更新命令则为
mvn process-resources -D flyway=false -D db.url=jdbc:mysql://127.0.0.1:3306/20190124 -D db.user=portals -D db.password=java
注意
1.特别要注意脚本文件的正确性,一定要保证脚本的正确,否则脚本执行到一半发生错误就需要手动修复
2.脚本文件如果已经执行过,便不要在进行任何更改(否则无法通过校验)
3.如果使用了flyway进行版本管理,就不要单独执行任何sql,以保证flyway的脚本完整性