简介

  • Flyway 是一款开源的数据库版本管理工具。它可以很方便的在命令行中使用,或者在Java应用程序中引入,用于管理我们的数据库版本

  • 在项目或产品中,很难一开始就把业务理清楚,把数据库表设计好,因此数据表也会在迭代周期不断迭代。在Java应用程序中使用Flyway,能快速有效地用于迭代数据库表结构,并保证部署到测试环境或生产环境时,数据表都是保持一致的

原理

  1. 项目启动,应用程序完成数据库连接池的建立后,Flyway自动运行
  2. 初次使用时,Flyway会创建一个flyway_schema_history表,用于记录sql脚本文件执行记录
  3. Flyway会扫描项目指定路径下(默认是classpath:db/migration)的所有sql脚本,与flyway_schema_history表脚本执行记录比对
    • 脚本文件名在表记录中存在「script 字段」,代表已经执行过,比对checksum,校验一致,则通过。不一致,则报错
    • 脚本文件名在表记录中不存在,代表没有执行过,则执行 SQL 脚本,并在执行记录表中插入执行记录

使用

  1. 初始数据库导出 SQL,作为初始版本脚本文件 V1.0.0__init_db.sql
  2. 每次增、删、改表和数据,都创建一个更新脚本文件 V1.1.0__update_tablename.sql,提交 SVN
  3. 「组员」更新 SVN 代码,重启应用后,自动更新本地数据库