文章目录
1. 基础环境搭建2. flyway环境搭建
1. 基础环境搭建
点击获取下载flyway的包(以6.4.2为例)
windows: flyway-commandline-6.4.2-windows-x64.ziplinux: flyway-commandline-6.4.2-linux-x64.tar.gz 解压包,所得的目录为flyway的安装目录把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.jarlogback-core-1.2.3.jarslf4j-api-1.7.25.jar 使执行命令时按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所在的绝对路径)注:不加也可以,不加则会使用默认的日志,打印出的日志没有时间、也无法控制日志级别; 把命令加到环境变量中
windows: 把安装目录加到环境变量Path中linux: 在home目录下的.bash_profile中把安装目录加到PATH变量中若不加到环境变量,则执行命令时,需要使用绝对路径或者到安装目录下执行命令
2. flyway环境搭建
使用例子工程来了解flyway的使用;下载git仓库:git@10.1.1.217:eh-engineering/flyway-migrate.git;该仓库里的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工程需要的配置文件; 修改db/flyway.conf
修改数据库配置,使之能够连上数据库;其它配置项根据实际情况修改; 增加要migrate的脚本
把工程导入到IDE中,在com/everhomes/dbmigrate目录下编写要执行SQL的类,参考其中已有的例子;在db/sql目录中加入要编写的脚本,参考其中已有的例子; 执行
在命令行中:flyway migrate -workingDirectory=xxx/demo/db -configFiles=flyway.conf
命令可以简化,请学习更详细的flyway知识再进行 在IDE中执行com.everhomes.dbmigrate.core.MigrateStartup类,其中Program arguments填migrate;