摘要:看看自己的项目的那些文件或者干脆连个建表语句都没有的同学是否会有想法把他们管理起来呢向大家推荐一款非常轻量级的敏捷数据库迁移框架。
看看自己的项目的那些SQL文件或者干脆连个建表语句都没有的同学是否会有想法把他们管理起来呢?向大家推荐一款非常轻量级的敏捷数据库迁移框架——Flyway。想知道她有什么魅力吗?
Flyway为大家提供了如下的实现方式:
Java API
命令行
Maven
Gradle
Ant
SBT
为了减少描述难度在这里使用了Java API,项目构建方式为Maven,数据库为MySQL
需要环境Java 6+
Maven 2+
MySQL
创建项目首先我们要在命令行中使用Maven原型插件执行如下命令
</>复制代码
mvn archetype:generate -B
-DarchetypeGroupId=org.apache.maven.archetypes
-DarchetypeArtifactId=maven-archetype-quickstart
-DarchetypeVersion=1.1
-DgroupId=foo
-DartifactId=bar
-Dversion=1.0-SNAPSHOT
-Dpackage=foobar
我们已经准备好开始了。当前项目的结构如下
</>复制代码
.
|-- pom.xml
`-- src
|-- main
| `-- java
| `-- foobar
| `-- App.java
`-- test
`-- java
`-- foobar
`-- AppTest.java
进入创建的项目
</>复制代码
cd bar
增加Flyway依赖
编辑当前目录下的pom.xml,增加Flyway和MySQL的依赖
</>复制代码
...
com.googlecode.flyway
flyway-core
2.3
mysql
mysql-connector-java
5.1.6
...
...
整合Flyway
现在我们可以将Flyway的代码放入项目中,并配置数据库,例如增加到默认生成的:src/main/java/foobar/App.java
</>复制代码
package foobar;
import com.googlecode.flyway.core.Flyway;
public class App {
public static void main(String[] args) {
// 创建Flyway实例
Flyway flyway = new Flyway();
// 设置数据库
flyway.setDataSource("jdbc:mysql://localhost:3306/foobar", "user", "pass");
// 开始迁移
flyway.migrate();
}
}
创建第一个数据迁移
创建数据迁移目录src/main/resources/db/migration,执行命令
mkdir -p src/main/resources/db/migration
创建我们的第一个数据迁移src/main/resources/db/migration/V1__Create_person_table.sql
</>复制代码
CREATE TABLE person (
id INT,
name VARCHAR(100)
);
执行程序
执行App.java(也可以直接在IDE中执行main方法)
mvn package exec:java -Dexec.mainClass=foobar.App -Dmaven.test.skip=true
如果你成功了,应该会得到如下信息
</>复制代码
INFO: Creating Metadata table: `foobar`.`schema_version`
Feb 27, 2014 12:20:18 AM com.googlecode.flyway.core.command.DbMigrate migrate
INFO: Current version of schema `foobar`: << Empty Schema >>
Feb 27, 2014 12:20:18 AM com.googlecode.flyway.core.command.DbMigrate applyMigration
INFO: Migrating schema `foobar` to version 1
Feb 27, 2014 12:20:18 AM com.googlecode.flyway.core.command.DbMigrate logSummary
INFO: Successfully applied 1 migration to schema `foobar` (execution time 00:00.194s).
持续增加数据迁移
假如我们现在需要增加第二个数据迁移,命名为:src/main/resources/db/migration/V2__Add_people.sql
</>复制代码
INSERT INTO person (id, name) VALUES (1, "Axel");
INSERT INTO person (id, name) VALUES (2, "Mr. Foo");
INSERT INTO person (id, name) VALUES (3, "Ms. Bar");
执行命令
mvn package exec:java -Dexec.mainClass=foobar.App -Dmaven.test.skip=true
输出如下
</>复制代码
Feb 27, 2014 12:25:00 AM com.googlecode.flyway.core.command.DbMigrate migrate
INFO: Current version of schema `foobar`: 1
Feb 27, 2014 12:25:00 AM com.googlecode.flyway.core.command.DbMigrate applyMigration
INFO: Migrating schema `foobar` to version 2
Feb 27, 2014 12:25:00 AM com.googlecode.flyway.core.command.DbMigrate logSummary
INFO: Successfully applied 1 migration to schema `foobar` (execution time 00:00.047s).
总结
通过Flyway让我们能很方便的管理数据库文件,并进行版本控制。文档地址
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/17454.html
摘要:看看自己的项目的那些文件或者干脆连个建表语句都没有的同学是否会有想法把他们管理起来呢向大家推荐一款非常轻量级的敏捷数据库迁移框架。 showImg(http://segmentfault.com/img/bVbV7p); 看看自己的项目的那些SQL文件或者干脆连个建表语句都没有的同学是否会有想法把他们管理起来呢?向大家推荐一款非常轻量级的敏捷数据库迁移框架——Flyway。想知道她有什...
摘要:一简介什么是是独立于数据库的应用管理跟踪数据库变更的数据库版本管理工具。当升级完成时,数据库表结构及数据应当与升级后的产品版本保持一致。 在执行数据库迁移时,我们推荐使用jOOQ与Flyway - 数据库迁移轻松。 在本章中,我们将简单的来使用这两个框架。 一、Flyway简介 showImg(https://segmentfault.com/img/bVSjro?w=400&h=31...
摘要:一持续集成对于微服务的意义拆之前要先解决合的问题在很多微服务化的文章中,很少会把持续集成放在第一篇,因为大多数的文章都会将如何拆的问题,例如拆的粒度,拆的时机,拆的方式。二持续集成就是不断的尝试在一起集成就是在一起。 此文已由作者刘超授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 一、持续集成对于微服务的意义:拆之前要先解决合的问题 在很多微服务化的文章中,很...
摘要:学习笔记使用很容易创建一个独立运行运行内嵌容器准生产级别的基于框架的项目,使用你可以不用或者只需要很少的配置。异常消息如果这个错误是由异常引起的。错误发生时请求的路径。 Spring-Boot 1.5 学习笔记 使用Spring Boot很容易创建一个独立运行(运行jar,内嵌Servlet容器)、准生产级别的基于Spring框架的项目,使用Spring Boot你可以不用或者只需要很...
阅读 4023·2023-01-11 11:02
阅读 4545·2023-01-11 11:02
阅读 3416·2023-01-11 11:02
阅读 5422·2023-01-11 11:02
阅读 4979·2023-01-11 11:02
阅读 5951·2023-01-11 11:02
阅读 5620·2023-01-11 11:02
阅读 4449·2023-01-11 11:02