温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

flyway,maven,oracle集成记录

发布时间:2020-08-10 02:30:22 来源:ITPUB博客 阅读:226 作者:1006356403 栏目:建站服务器

Flyway功能以及sql命名规范介绍

Flyway是一款开源的数据库sql脚本版本管理工具。
它的原理是:在schema中生成一张version表,记录此次更新的sql脚本版本号,保证版本号能和数据库对应起来。
在定义sql脚本名称的时候需要使用如下版本规范:
1
、前缀(可配置,默认值:V
2
、版本
3
、分隔符(两个下划线)
4
、描述(下划线或空格分开)
5
、后缀(可配置,默认情况下:SQL
如:V1_Create_person_table.sql V2_Insert_persons.sql
其中Create_person_tableInsert_persons都是脚本功能的描述

Flyway目录结构以及配置介绍

具体集成过程如下:
目录结构和maven的目录结构一致,如下:
flyway,maven,oracle集成记录
flyway,maven,oracle集成记录
可以看到和src同级目录有一个flyway的配置文件和工程的pom文件。
配置文件flyway.properties内容如下,主要配置的都是一些数据库的连接信息.一目了然:

flyway.driver=oracle.jdbc.OracleDriver
flyway.url=jdbc:oracle:thin:@192.168.2.200:1521/orcl
flyway.user=qq
flyway.password=qq
flyway.schemas=FLYWAY
flyway_table=qq_version
flyway.placeholders.keyABC=valueXYZ
flyway.placeholders.otherplaceholder=value123

flywayplugin信息,如下:
flyway,maven,oracle集成记录
切记在pom文件的依赖信息里一定要出现数据库的驱动包:
flyway,maven,oracle集成记录
其中lib目录下放的是flywayjarflyway-commandline-4.0-sources.jar
切记:flywaysql脚本存放目录默认是resources/db/ migration
可以看到在migration目录下我有两个脚本,脚本如下:
V1__Create_person_table.sql

create table PERSON (
NAME varchar(80) not null
);
V2__Insert_persons.sql

INSERT INTO PERSON (NAME) VALUES ('Peter Meyer');
INSERT INTO PERSON (NAME) VALUES ('Peter Bonnd');
INSERT INTO PERSON (NAME) VALUES ('Klara Korn');

Jenkins工程配置介绍

配置完成之后,需要在jenkins上面配置工程了,这里需要注意的只是构建参数:
mvn flyway:init
(初始化Flyway metadata
mvn flyway:migrate
(执行Flyway 升级操作)
mvn flyway:validate
(校验Flyway 数据正确性)
如下,是我的构建参数:
-X -Dflyway.configFile=flyway.properties flyway:migrate -Dmaven.test.skip=true
参数介绍:-X debug级别构建,打印详细的构建过程
-Dflyway.configFile=
指定对应的flyway配置文件
-Dmaven.test.skip=true
跳过测试用例

常见错误分析

1.构建失败,create schema没权限

flyway,maven,oracle集成记录
还记得配置文件里面有一个参数:
flyway.schemas=qq
在这里用户必须具备创建schema的权限,因此这里给用户授予dba权限:
flyway,maven,oracle集成记录
重新编译执行通过。

2.构建之后找不到生成的表:

flyway,maven,oracle集成记录
由于schema_version是记录数据库版本信息的,因此flyway对其做了保护策略,如果要查看这张表,则必须给表名加双引号,如:select * from "schema_version"
flyway,maven,oracle集成记录
flyway,maven,oracle集成记录

这里说明下:

1.对于schema的构建,在采用jenkins构建的时候flyway先会去检测schema存不存在,不存在创建,存在则跳过。因此建议大家在使用flyway构建前,先创建好schema

flyway,maven,oracle集成记录

2.在写配置文件的时候由于oracle默认的用户名名称都是大写,因此配置文件中的schema也请标注为大写。

构建结果查看

flyway,maven,oracle集成记录
flyway,maven,oracle集成记录
flyway,maven,oracle集成记录
可以在数据库里查看生成的schema_version信息:
flyway,maven,oracle集成记录
这张表就记录了数据库的sql脚本版本信息。后续有更新也会从这张表里面获取当前的数据库版本信息。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI