flyway教程
[flyway工作原理](https://flywaydb.org/getstarted/how)
簡單使用(整合 spring boot 直接看下面)
配置
- 新增依賴
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>5.1.1</version>
</dependency>
- 如下新增sql指令碼
執行
- 程式碼如下
public class TestFlyway {
@Test
public void flyway(){
// Create the Flyway instance
Flyway flyway = new Flyway();
// Point it to the database
flyway.setDataSource("jdbc:mysql://127.0.0.1:3306/flyway?useLegacyDatetimeCode=false&serverTimezone=Asia/Hong_Kong&useSSL=false", "root", "123456");
// Start the migration
flyway.migrate();
}
}
- 執行單元測試
- 可以看到資料庫多了兩個表(
flyway_schema_history
是flyway用於儲存版本記錄資訊,users
是我們的指令碼建的)
spring boot 專案整合flyway
這裡使用的資料庫是一樣的,所以整合spring boot後flyway仍然能知道資料庫的版本記錄
配置
- 新增依賴
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>5.1.1</version>
</dependency>
- 新增配置(配置引數解析)
# 資料庫版本控制
flyway:
enabled: true
# 若連線的資料庫非空庫,是否初始化
baseline-on-migrate: true
# 是否開啟校驗
validate-on-migrate: false
# 預設指令碼載入路徑:/db/migration
# locations=classpath:/db/migration
- 如下新增新版本的sql指令碼(紅框部分是版本號,flyway這時只會執行V1.3版本的指令碼)
執行
- 啟動 spring boot 專案,flyway會自動初始化資料庫
- 相關日誌輸出如下
2018-06-20 11:12:40.791 INFO 19067 --- [ restartedMain] o.f.core.internal.util.VersionPrinter : Flyway Community Edition 5.1.1 by Boxfuse
2018-06-20 11:12:40.955 INFO 19067 --- [ restartedMain] o.f.c.internal.database.DatabaseFactory : Database: jdbc:mysql://127.0.0.1:3306/flyway (MySQL 5.7)
2018-06-20 11:12:40.990 INFO 19067 --- [ restartedMain] o.f.core.internal.command.DbMigrate : Current version of schema `flyway`: 1.2
2018-06-20 11:12:40.996 INFO 19067 --- [ restartedMain] o.f.core.internal.command.DbMigrate : Migrating schema `flyway` to version 1.3 - InsertUserAndCreateOrder
2018-06-20 11:12:41.020 INFO 19067 --- [ restartedMain] o.f.core.internal.command.DbMigrate : Successfully applied 1 migration to schema `flyway` (execution time 00:00.041s)
2018-06-20 11:12:41.140 INFO 19067 --- [ restartedMain] o.s.b.d.a.OptionalLiveReloadServer : LiveReload server is running on port 35729
2018-06-20 11:12:41.239 INFO 19067 --- [ restartedMain] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2018-06-20 11:12:41.264 INFO 19067 --- [ restartedMain] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 18080 (http)
2018-06-20 11:12:41.267 INFO 19067 --- [ restartedMain] com.neo.Application : Started Application in 2.636 seconds (JVM running for 3.202)
- 資料庫成功插入資料並建立新的表
使用注意
- 若開啟校驗,flyway在啟動校驗失敗時會清空資料庫中的表和刪除表結構
- 若不開啟
baseline-on-migrate
,在連線的資料庫為非空庫時,程式會報錯 - 若執行sql指令碼失敗,flyway會記錄失敗資訊到
flyway_schema_history
表,並且下次重新啟動flyway前必須先刪掉失敗資訊,否則會報錯
相關文章
- Flyway簡介及使用
- Spring Boot 2.x基礎教程:使用Flyway管理資料庫版本Spring Boot資料庫
- 資料庫遷移神器——Flyway資料庫
- Flyway, 資料庫Schema管理利器資料庫
- 使用Flyway來管理資料庫版本資料庫
- Flyway版本化管理資料庫指令碼資料庫指令碼
- java 自動升級sql指令碼 flyway 工具JavaSQL指令碼
- Spring Boot Flyway管理資料庫版本 - josdemSpring Boot資料庫
- Flyway讓資料庫版本管理更簡單資料庫
- flyway實現java 自動升級SQL指令碼JavaSQL指令碼
- 資料庫版本管理工具Flyway應用資料庫
- 使用Java和Flyway進行資料庫版本控制Java資料庫
- Spring Boot 整合 Flyway 實現資料庫版本控制Spring Boot資料庫
- 【jOOQ中文】3. 資料庫版本管理工具Flyway資料庫
- springboot web專案建立及自動配置分析(thymeleaf+flyway)Spring BootWeb
- springboot結合flyway自動建立資料庫及資料表Spring Boot資料庫
- Spring Boot 2 實戰:使用 Flyway 管理你資料庫的版本變更Spring Boot資料庫
- 使用Kubernetes,Spring Boot和Flyway實現零停機部署原始碼專案Spring Boot原始碼
- 如何使用Spring Boot和Flyway建立不同資料庫的多租戶應用? - reflectoring.ioSpring Boot資料庫
- Spring Boot中兩個資料庫遷移工具Liquibase和Flyway的比較 - 4lexSpring Boot資料庫UI
- winscp教程,winscp教程,使用教程
- appium教程教程(一)APP
- git 入門教程之github 教程Github
- Kafka教程(一)Kafka入門教程Kafka
- 保姆級mysql安裝教程+下載教程-附視訊教程MySql
- 開盒查人教程開盒查人教程開盒查人教程開盒查人教程
- python基礎教程|菜鳥教程Python
- leapftp教程,掌握leapftp教程只需6步FTP
- Memcache教程 Memcache零基礎教程
- rbac 教程
- God教程Go
- 使用教程
- Vuex教程Vue
- flutter教程Flutter
- SQL教程SQL
- MySQL 教程MySql
- Swoole 教程
- Canvas 教程Canvas