flyway和liquibase的使用样例
在代码上我们有svn和git等诸多的版本控制方法。
但是在数据库上却没有相应的工具。一度导致多环境见的数据库同步难以维持。
flyway和liquibase都是常见的数据库版本控制工具。
flyway社区版的功能相对完全免费的liquibase来说简直毫无可比性。
因此免费用户的话强烈liquibase。
样例代码已上传至Github:https://github.com/hackyoMa/changedb,样例基于Spring Boot。
flyway:
application.yml
- spring:
- datasource:
- platform: mysql
- url: jdbc:mysql://xxx:3306/xxx?useUnicode=true&characterEncoding=utf8&useSSL=false
- username: xxx
- password: xxx
- driver-class-name: com.mysql.jdbc.Driver
- jpa:
- database: MYSQL
- show-sql: true
- hibernate:
- ddl-auto: none
- flyway:
- locations: classpath:db/migration
resources\db\migration\目录下文件:
V1_0__createBook.sql
- CREATE TABLE `book` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
- `create_time` datetime(0) NOT NULL,
- PRIMARY KEY (`id`) USING BTREE
- ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
- CREATE TABLE `test` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
- PRIMARY KEY (`id`) USING BTREE
- ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
- CREATE TRIGGER book_trigger AFTER INSERT ON book FOR EACH ROW BEGIN
- INSERT INTO test (`name`) VALUES ('');
- END;
V1_1__insertBook.sql
- INSERT INTO book(name, create_time) VALUES ('测试', '2018-04-21 16:53:48');
liquibase:
application.yml
- spring:
- datasource:
- platform: mysql
- url: jdbc:mysql://xxx:3306/xxx?useUnicode=true&characterEncoding=utf8&useSSL=false
- username: xxx
- password: xxx
- driver-class-name: com.mysql.jdbc.Driver
- jpa:
- database: MYSQL
- show-sql: true
- hibernate:
- ddl-auto: none
- liquibase:
- change-log: classpath:db/changelog/db.changelog-master.xml
resources\db\changelog\目录下文件:
db.changelog-1.0.sql
- --liquibase formatted sql
- --changeset mahaoyu:1.0
- CREATE TABLE `book` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
- `create_time` datetime(0) NOT NULL,
- PRIMARY KEY (`id`) USING BTREE
- ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
- --changeset mahaoyu:1.1
- CREATE TABLE `test` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
- PRIMARY KEY (`id`) USING BTREE
- ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
db.changelog-1.1.sql
- --liquibase formatted sql
- --changeset mahaoyu:1.2 splitStatements:false
- CREATE TRIGGER book_trigger AFTER INSERT ON book FOR EACH ROW BEGIN
- INSERT INTO test (`name`) VALUES ('1');
- END;
- --changeset mahaoyu:1.3 splitStatements:false
- CREATE PROCEDURE `proc_adder` ( IN a INT, IN b INT, OUT sum INT ) BEGIN
- DECLARE
- c INT;
- IF
- a IS NULL THEN
- SET a = 0;
- END IF;
- IF
- b IS NULL THEN
- SET b = 0;
- END IF;
- SET sum = a + b;
- END;
- --changeset mahaoyu:1.4
- CREATE VIEW Oceania AS SELECT * FROM book;
- --changeset mahaoyu:1.5 splitStatements:false
- CREATE FUNCTION hello ( ) RETURNS VARCHAR ( 255 ) BEGIN
- RETURN 'Hello world,i am mysql';
- END;
- --changeset zhangsan:1.6
- INSERT INTO book(name, create_time) VALUES ('测试', '2018-04-21 16:53:48');
db.changelog-master.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <databaseChangeLog
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
- xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
- http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
- <include file="db/changelog/db.changelog-1.0.sql"/>
- <include file="db/changelog/db.changelog-1.1.sql"/>
- </databaseChangeLog>
这里对liquibase的事务、触发器等进行了示例。另外liquibase还支持xml语法,以增加对不同数据库的支持。
flyway和liquibase的使用样例的更多相关文章
- Flyway对比Liquibase(转)
数据库迁移工具. 很多应用的运行是需要数据库支持的,而随着快速迭代,产品更替的节奏加快,除了产品本身需要不断更新以外,数据库也需要做出合适的管理了. 为什么需要数据库迁移管理 比如第一个版本的产品只包 ...
- C++的性能C#的产能?! - .Net Native 系列《三》:.NET Native部署测试方案及样例
之前一文<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥> 获得很多朋友支持和鼓励,也更让我坚定做这项技术的推广者,希望能让更多的朋友了解这项技术,于是先从官方 ...
- MarkDown+LaTex 数学内容编辑样例收集
$\color{green}{MarkDown+LaTex 数学内容编辑样例收集}$ 1.大小标题的居中,大小,颜色 [例1] $\color{Blue}{一元二次方程根的分布}$ $\color{R ...
- 33个超级有用必须要收藏的PHP代码样例
作为一个正常的程序员,会好几种语言是十分正常的,相信大部分程序员也都会编写几句PHP程序,如果是WEB程序员,PHP一定是必备的,即使你没用开发过大型软件项目,也一定多少了解它的语法. 在PHP的流行 ...
- 关于peersim样例配置文件的超详细解读(新手勿喷)
相信很多兄弟一开始接触peersim,对配置文件还是有点不适应,我看了好久的样例的配置文件,一层层去找对应的文件的方法,终于好像悟懂了一点,记下来以后回顾. 贴上代码,一点点分析. 首先要说下所谓的配 ...
- hdu 1003 MAX SUM 简单的dp,测试样例之间输出空行
测试样例之间输出空行,if(t>0) cout<<endl; 这样出最后一组测试样例之外,其它么每组测试样例之后都会输出一个空行. dp[i]表示以a[i]结尾的最大值,则:dp[i ...
- CloudSim样例分析
自带八个样例描述: cloudsim-2.1.1\examples目录下提供了一些CloudSim样例程序,每个样例模拟的环境如下: (1)CloudSimExample1.Java:创建一个一台主机 ...
- 样例20-汽车SHOW
观看样例点这里 素材下载 1.设置场景大小为400*3002.执行:文件->导入->导入到库,选择需要的汽车图片文件,将其导入到库面板中3.按照同样的方式,在库面板中导入所需的背景音乐文件 ...
- java使用xsd校验xml样例
知识点:XSD文件是指XML结构定义 ( XML Schemas Definition )文件,是DTD的替代品.可以用一个指定的XML Schema来验证某个XML文档,以检查该XML文档是否符合其 ...
随机推荐
- laravel部署创建新项目 助记
打开进入homestead虚拟机,并进入code文件夹 cd ~/homestead && vagrant up && vagrant ssh cd ~/Code 进行 ...
- Arch Linux安装Firefox 火狐中文版
很多人刚安装好系统之后,刚开始内置的浏览器是火狐的英文版,很多时候因为需要账号同步的原因需要国内版本的火狐浏览器,这个时候我们应该怎么操作呢? 其实也非常的简单 首先我们 输入命令 pacman -S ...
- Linux中删除特殊名称文件的多种方式
今日分享:我们在肉体的疾病方面花了不少钱,精神的病害方面却没有花什么,现在已经到了时候,我们应该有不平凡的学校.--<瓦尔登湖> 前言 我们都知道,在linux删除一个文件可以使用rm命令 ...
- 【English】20190320
valid有效的 [ˈvælɪd] solitary独立的 [ˈsɑ:ləteri] data definition not valid unless solitary qualifying有资格的 ...
- Ajax概述和判断用户名是否存在的简单代码练习
在本代码中主要体现,Ajax实现了部分位置的刷新.不需要重新刷新网页,重新请求服务器.下面用过代码来对Ajax更深的认识 这里需要创建,一个jsp文件(显示登录界面),js文件(对Ajax的主要设置) ...
- java获取类加载路径和项目根路径的5种方法
// 第一种:获取类加载的根路径 D:\IDEAWorkspace\hs-bluetooth-lock\src\applications\bluetooth-api\target\classes Fi ...
- python3 闭包函数
'''闭包函数:内部函数引用外部函数变量(非全局变量)'''def func(y): x = 1 def func1(): print(x, y) return func1 f = func(2)pr ...
- node+mysql 数据库连接池
1. 什么是数据库连接池? 数据库连接池是程序启动时建立足够的数据库连接,并将这些连接组成一个池,由程序动态地对池中的连接进行申请,使用和释放. 2. 使用数据库连接池原理及优点是什么? 数据库连接池 ...
- Python OpenCV 图像处理初级使用
# -*- coding: utf-8 -*-"""Created on Thu Apr 25 08:11:32 2019 @author: jiangshan" ...
- Educational Codeforces Round 62 (Rated for Div. 2) Solution
最近省队前联考被杭二成七南外什么的吊锤得布星,拿一场Div. 2恢复信心 然后Div.2 Rk3.Div. 1+Div. 2 Rk9,rating大涨200引起舒适 现在的Div. 2都怎么了,最难题 ...