Flaway数据库迁移工具
2015 年 01 月 17 日
db

    在日常开发中, 经常由于hotfix或者feature需要对数据库表进行更新, 很难人工去把控DB的变更, 难免可能出现问题, Flyway也许能帮助我们. Flyway支持多种使用方式: 如 命令行 Java API, Maven, Gradle等, 并支持常用的数据库: Oracle, MySQL, MariaDB, H2等.

  • 平时build多用Maven, 使用时需要做一些基本的插件配置

  • <plugin>
        <groupId>org.flywaydb</groupId>
        <artifactId>flyway-maven-plugin</artifactId>
        <version>3.1</version>
        <configuration>
            <url>jdbc:mysql://127.0.0.1:3306/gaara</url>
            <user>root</user>
            <password>root</password>
            <locations>
                <location>filesystem:${project.basedir}/db</location>
            </locations>
            <table>schema_history</table><!-- 数据库版本历史表 -->
            <baselineOnMigrate>true</baselineOnMigrate>
            <baselineVersion>5</baselineVersion>
        </configuration>
        <dependencies>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql-connector-java.version}</version>
            </dependency>
        </dependencies>
    </plugin>
            
  • 执行mvn迁移命令

  •             mvn compile flyway:migrate
            
  • 数据库会生成schema_history表

  • 现在我们进行了数据库变更, 并通过sqlMigrationPrefix, sqlMigrationSeparator等配置指明了db迁移文件的变更, 再次执行迁移命令

  • 此时数据库历史表发生变化

  • 除了migrate外, 该插件还提供了几个目标

  • clean, info, validate, baseline, repair

    详细可参考这里.

好人,一生平安。