1. 基础环境搭建

  1. 点击获取下载flyway的包(以6.4.2为例)
    • windows: flyway-commandline-6.4.2-windows-x64.zip
    • linux: flyway-commandline-6.4.2-linux-x64.tar.gz
  2. 解压包,所得的目录为flyway的安装目录
  3. 把flyway/6.4.2/patch目录里的lib目录拷贝到解压目录里进行覆盖,删除掉安装目录下的lib/community/flyway-core-6.4.2.jar包
    • 删除lib/community/flyway-core-6.4.2.jar包原因有两个:
      • 去除不支持MySQL5.6的限制,在org/flywaydb/core/internal/database/mysql/MySQLDatabase.java里的ensureSupported()方法,把版本比较由5.7改成5.6,从而去掉了只能使用MySQL5.7以上的数据库;
      • flyway对版本的支持与实际需求有差距,需要对版本做了扩展
    • lib下的其它jar包是为了在命令行情况下可以使用logback方式进行打印日志
      • logback-classic-1.2.3.jar
      • logback-core-1.2.3.jar
      • slf4j-api-1.7.25.jar
  4. 使执行命令时按logback方式打印日志
    • 修改flyway或flyway.cmd文件,给java运行命令加上-Dlogback.configurationFile参数(在java命令执行前加下面行一行)
      • windows: set JAVA_ARGS=%JAVA_ARGS% -Dlogback.configurationFile=xxx/logback.xml (其中xxx换成logback.xml所在的绝对路径,%JAVA_ARGS%后有个空格)
      • linux: JAVA_ARGS="$JAVA_ARGS -Dlogback.configurationFile=xxx/logback.xml" (其中xxx换成logback.xml所在的绝对路径)
      • 注:不加也可以,不加则会使用默认的日志,打印出的日志没有时间、也无法控制日志级别;
  5. 把命令加到环境变量中
    • windows: 把安装目录加到环境变量Path中
    • linux: 在home目录下的.bash_profile中把安装目录加到PATH变量中
    • 若不加到环境变量,则执行命令时,需要使用绝对路径或者到安装目录下执行命令

2. flyway环境搭建

  1. 使用例子工程来了解flyway的使用;
  2. 下载git仓库:git@10.1.1.217:eh-engineering/flyway-migrate.git;
  3. 该仓库里的demo工程是例子工程,里面的结构:
    • db目录
      • db/jars: flyway支持使用java代码编写sql的执行,这些class需打成jar放到该目录下才能执行(命令行模式只支持用jar执行,不支持独立的class文件);
      • db/sql: 放置用sql脚本编写的要执行的SQL;
      • flyway.conf: flyway执行需要的配置文件,命令需要找得到该配置文件;
      • logback.xml: 使用logback打印日志,该文件可以放到其它目录,但在flyway.cmd中配置的logback.configurationFile参数需要指向该文件;
    • src目录:里面放置了使用java代码编写的SQL执行,在IDE中可以直接执行;
    • tools目录: 里面提供了config-migrate脚本,通过该脚本会在db/sql里创建带格式的sql文件,节省手工创建的时间;
    • pom.xml: maven工程需要的配置文件;
  4. 修改db/flyway.conf
    • 修改数据库配置,使之能够连上数据库;
    • 其它配置项根据实际情况修改;
  5. 增加要migrate的脚本
    • 把工程导入到IDE中,在com/everhomes/dbmigrate目录下编写要执行SQL的类,参考其中已有的例子;
    • 在db/sql目录中加入要编写的脚本,参考其中已有的例子;
  6. 执行
    • 在命令行中:flyway migrate -workingDirectory=xxx/demo/db -configFiles=flyway.conf
      • 命令可以简化,请学习更详细的flyway知识再进行
    • 在IDE中执行com.everhomes.dbmigrate.core.MigrateStartup类,其中Program arguments填migrate;
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐