摘要:看看自己的項目的那些文件或者干脆連個建表語句都沒有的同學是否會有想法把他們管理起來呢向大家推薦一款非常輕量級的敏捷數據庫遷移框架。
看看自己的項目的那些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的依賴
整合Flyway... ... com.googlecode.flyway flyway-core 2.3 ... mysql mysql-connector-java 5.1.6
現在我們可以將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讓我們能很方便的管理數據庫文件,并進行版本控制。文檔地址
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/64074.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你可以不用或者只需要很...
閱讀 1772·2023-04-25 21:50
閱讀 2419·2019-08-30 15:53
閱讀 768·2019-08-30 13:19
閱讀 2743·2019-08-28 17:58
閱讀 2465·2019-08-23 16:21
閱讀 2701·2019-08-23 14:08
閱讀 1374·2019-08-23 11:32
閱讀 1439·2019-08-22 16:09