https://flywaydb.org/documentation/

Flyway is an open-source database migration tool. It strongly favors simplicity and convention over configuration.

It is based around just 7 basic commands: Migrate, Clean, Info, Validate, Undo, Baseline and Repair.

Migrations can be written in SQL (database-specific syntax (such as PL/SQL, T-SQL, ...) is supported) or Java (for advanced data transformations or dealing with LOBs).

It has a Command-line client. If you are on the JVM, we recommend using the Java API (also works on Android) for migrating the database on application startup. Alternatively, you can also use the Maven plugin or Gradle plugin.

And if that not enough, there are plugins available for Spring Boot, Dropwizard, Grails, Play, SBT, Ant, Griffon, Grunt, Ninja and more!

Supported databases are Oracle, SQL Server (including Amazon RDS and Azure SQL Database, DB2, MySQL (including Amazon RDS, Azure Database & Google Cloud SQL), Aurora MySQL, MariaDB, Percona XtraDB Cluster, PostgreSQL (including Amazon RDS, Azure Database, Google Cloud SQL & Heroku), Aurora PostgreSQL, Redshift, CockroachDB, SAP HANA, Sybase ASE, Informix, H2, HSQLDB, Derby and SQLite.

https://flywaydb.org/documentation/commandline/#download-and-installation

类似于Powershell的发布,Flyway也提供了stable和preview两种版本

Command-line tool

The Flyway command-line tool is a standalone Flyway distribution. It runs on Windows, macOS and Linux and it is primarily meant for users who wish to migrate their database from the command-line without having to integrate Flyway into their applications nor having to install a build tool.

Download and installation

Select the platform that you need.

Each download contains all editions (community, pro, enterprise) of Flyway.

Directory structure

The Flyway download, once extracted, now becomes a directory with the following structure:

 flyway-5.2.4
conf
flyway.conf configuration file
drivers JDBC drivers
jars Java-based migrations (as jars)
jre
lib
licenses
sql SQL migrations
flyway macOS/Linux executable
flyway.cmd Windows executable

Usage

> flyway [options] command

Flyway editions

The Flyway Command-line tool distribution ships with all editions of Flyway.

It defaults to Flyway Community Edition.

It can however easily be configured to run the Flyway Pro or Enterprise Edition instead.

Environment variable

One way to switch between the various Flyway editions is to set the FLYWAY_EDITION environment variable prior to executing Flyway to any of the following values:

community Select the Flyway Community Edition (default)
pro Select the Flyway Pro Edition
enterprise Select the Flyway Enterprise Edition

Edition-selecting flags

Alternatively Flyway also comes with edition-selecting flags.

By default the flyway command will launch whatever edition has been selected with the FLYWAY_EDITION environment variable (defaulting to community).

You can however also use edition-selecting flags to force the selection of the edition of your choice and avoid the need to set any environment variable at all:

-community Select the Flyway Community Edition
-pro Select the Flyway Pro Edition
-enterprise Select the Flyway Enterprise Edition

Commands

Name Description
migrate Migrates the database
clean Drops all objects in the configured schemas
info Prints the details and status information about all the migrations
validate Validates the applied migrations against the ones available on the classpath
baseline Baselines an existing database, excluding all migrations up to and including baselineVersion
repair Repairs the schema history table

JDBC drivers

In order to connect with your database, Flyway needs the appropriate JDBC driver to be available in its drivers directory.

Flyway ships with JDBC drivers for the following databases by default:

  • Aurora MySQL
  • Aurora PostgreSQL
  • CockroachDB
  • Derby
  • H2
  • HSQLDB
  • MariaDB
  • MySQL
  • Percona XtraDB
  • PostgreSQL
  • SQLite
  • SQL Server
  • Sybase ASE

If your database is not listed here, you need to download its JDBC driver and place it in the drivers directory yourself.

Instructions on where to download the drivers from are provided on the respective documentation pages for each database.

Configuration

The Flyway Command-line tool can be configured in a wide variety of ways.

You can use config files, environment variables and command-line parameters.

These different means of configuration can be combined at will.

Config files

Config files are supported by the Flyway command-line tool.

If you are not familiar with them, check out the Flyway config file structure and settings reference first.

Flyway will search for and automatically load the following config files if present:

  • <install-dir>/conf/flyway.conf
  • <user-home>/flyway.conf
  • <current-dir>/flyway.conf

It is also possible to point Flyway at one or more additional config files.

This is achieved by supplying the command line parameter -configFiles= as follows:

flyway -configFiles=path/to/myAlternativeConfig.conf migrate

To pass in multiple files, separate their names with commas:

flyway -configFiles=path/to/myAlternativeConfig.conf,other.conf migrate

Relative paths are relative to the current working directory.

Alternatively you can also use the FLYWAY_CONFIG_FILES environment variable for this. When set it will take preference over the command-line parameter.

> export FLYWAY_CONFIG_FILES=path/to/myAlternativeConfig.conf,other.conf
> flyway migrate

By default Flyway loads configuration files using UTF-8. To use an alternative encoding, use the command line parameter -configFileEncoding= as follows:

> flyway -configFileEncoding=ISO-8859-1 migrate

Alternatively you can also use the FLYWAY_CONFIG_FILE_ENCODING environment variable for this. When set it will take preference over the command-line parameter.

> export FLYWAY_CONFIG_FILE_ENCODING=ISO-8859-1

Environment Variables

To make it easier to work with cloud and containerized environments, Flyway also supports configuration via environment variables.

Check out the Flyway environment variable reference for details.

Command-line Arguments

Finally, Flyway can also be configured by passing arguments directly from the command-line:

> flyway -user=myuser -schemas=schema1,schema2 -placeholders.keyABC=valueXYZ migrate

Overriding order

The Flyway command-line tool has been carefully designed to load and override configuration in a sensible order.

Settings are loaded in the following order (higher items in the list take precedence over lower ones):

  1. Command-line arguments
  2. Environment variables
  3. Custom config files
  4. <current-dir>/flyway.conf
  5. <user-home>/flyway.conf
  6. <install-dir>/conf/flyway.conf
  7. Flyway command-line defaults

The means that if for example flyway.url is both present in a config file and passed as -url= from the command-line, the command-line argument will take precedence and be used.

Credentials

If you do not supply a database user or password via any of the means above, you will be prompted to enter them:

Database user: myuser
Database password:

If you want Flyway to connect to your database without a user or password, you can suppress prompting by adding the -n flag.

Java Arguments

If you need to to pass custom arguments to Flyway’s JVM, you can do so by setting the JAVA_ARGS environment variable.

They will then automatically be taken into account when launching Flyway.

This is particularly useful when needing to set JVM system properties.

Output

All debug, info and warning output is sent to stdout. All errors are sent to stderr.

Debug output

Add -X to the argument list to also print debug output.

Quiet mode

Add -q to the argument list to suppress all output, except for errors and warnings.

Flyway Overview and Installation的更多相关文章

  1. Spring Boot Reference Guide

    Spring Boot Reference Guide Authors Phillip Webb, Dave Syer, Josh Long, Stéphane Nicoll, Rob Winch,  ...

  2. Docker on CentOS for beginners

    Introduction The article will introduce Docker on CentOS. Key concepts Docker Docker is the world's ...

  3. leptonica 学习笔记1

    Updated: April 26, 2015 Leptonica is a pedagogically-oriented open source site containing software t ...

  4. Guzzle php resetful webservice farmework

    Guzzle is a PHP HTTP client that makes it easy to work with HTTP/1.1 and takes the pain out of consu ...

  5. phantompy — phantompy 0.10 documentation

    phantompy - phantompy 0.10 documentation     phantompy¶     Release v0.10.     phantompy is a BSD Li ...

  6. ROS常用三維機器人仿真工具Gazebo教程匯總

    參考網址: 1. http://gazebosim.org/tutorials 2. http://gazebosim.org/tutorials/browse Gazebo Tutorials Ga ...

  7. Troubleshooting Autoinvoice Import

    metalink :1089172.1 In this Document   Purpose   Troubleshooting Steps   AutoInvoice Execution Repor ...

  8. mcelog用法详解

    手动启动mcelog方法: # mcelog --daemon Run mcelog in daemon mode, waiting for errors from the kernel. 后台服务启 ...

  9. ZipArchive扩展的使用和Guzzle依赖的安装使用

    在项目开发的过程中,需要去远程下载录音文件 然后保存到自己的项目中,然后再把录音文件压缩打包,最后再下载给用户 1.Guzzle依赖的安装 guzzle官方文档:http://guzzle-cn.re ...

随机推荐

  1. Oracle10g 连接 sqlserver 在server2008r2 中连接 iis7 .net4.0

    一.做好了连接但是到了64位的server2008r2上就是不行,报错dns上不匹配.最后找到原因了 自己到c盘里面找32位的odbc管理工具然后建立连接,然后一切正常. 二.iis7 .net4.0 ...

  2. CSS position &居中(水平,垂直)

    css position是个很重要的知识点: 知乎Header部分: 知乎Header-inner部分: position属性值: fixed:生成绝对定位的元素,相对浏览器窗口进行定位(位置可通过: ...

  3. HDU1530 最大流问题

    第一次写Dinic 然后贴一下 最基础的网络流问题 嘎嘎: #include <iostream> #include<cstdio> #include<string.h& ...

  4. uva 10163 Storage Keepers

    题意: 有n个仓库,m个人,一个仓库只能由一个人托管,每个人可以托管多个仓库. 每个人有一个能力值a,如果说他托管了k个仓库,那么这些仓库的安全值都是a/k. 雇佣一个人的花费也是a. 如果一个仓库没 ...

  5. OpenCV-3.3.0测试

    安装包目录下/samples/cpp里是各种例程 其中example_cmake里CMakeLists.txt已写好,直接cmake,make就可以,example.cpp是一个调用笔记本摄像头并显示 ...

  6. Python: 字典dict: zip()

    problem: 怎样在数据字典中执行一些计算操作(比如求最小值.最大值.排序等等)? answer: eg1: 考虑下面的股票名和价格映射字典: prices = {'ACME': 45.23,'A ...

  7. 调用微信JS-SDK配置签名

    前后端进行分开开发: 1:后端实现获取 +++接口凭证:access_token (公众号的全局唯一接口调用凭据) ** GET 获取:https://api.weixin.qq.com/cgi-bi ...

  8. 苹果企业版签名分发相关问题,蒲公英签名,fir.im分发,安装ipa设置信任

    苹果企业版签名分发相关问题,蒲公英签名,fir.im分发,安装ipa设置信任蒲公英 - 高效安全的内测应用发布.管理平台https://www.pgyer.com/app/signature分发版 2 ...

  9. bzoj4445 小凸想跑步

    题目链接 半平面交,注意直线方向!!! 对于凸包上任意一条边$LINE(p_i,p_{i+1})$都有$S_{\Delta{p_i} {p_{i + 1}}p} < S_{\Delta{p_0} ...

  10. [转载]C#中Invoke的用法()

    invoke和begininvoke 区别 一直对invoke和begininvoke的使用和概念比较混乱,这两天看了些资料,对这两个的用法和原理有了些新的认识和理解. 首先说下,invoke和beg ...