XXL-Job 适配 Postgre 数据库的完整流程

OKX欧易app

OKX欧易app

欧易交易所app是全球排名第一的虚拟货币交易所,注册领取6万元盲盒礼包!

APP下载   官网注册

前言:

现时看官们对“postgresql自增”大约比较关切,看官们都想要知道一些“postgresql自增”的相关知识。那么小编也在网摘上网罗了一些关于“postgresql自增””的相关知识,希望小伙伴们能喜欢,看官们快快来了解一下吧!
背景

开源任务调度框架 XXL-Job 默认是基于 MySQL 数据库开发的,好在它是使用了 MyBatis ,要支持其他数据库,需要改 Mapping 映射文件,建表语句换成其他数据库的。

主要差异表现在四个方面:

建表语句中的主键自增Mapping 中的转义符号分页查询语句时间函数

本文介绍 XXL-Job 连接 Postgre 数据库的改造过程。

数据发送

第一步,将官方提供的 MySQL 建表语句通过 Navicat 导入 MySQL ,这样可以保证对应版本的建表语句的一致性。

第二步,选中 MySQL 连接下的 xxl-job 数据库,右键“数据传输” ,使用 Navicat 的数据传输功能,将 xxl-job 数据库的表结构传输给对应的 Postgre 连接:


等待完成,这个数据传输会完成创建 SEQUENCE 和表以及基础数据插入的工作,
但是不会为自增主键设置默认值

第三步,在 Postgre 连接下对应的数据库中,创建查询语句,修改所有用到自增主键的表,设置 default 值为自增。

ALTER TABLE "public"."xxl_job_user" alter column ID set default nextval('xxl_job_user_id_seq'::regclass);ALTER TABLE "public"."xxl_job_info" alter column ID set default nextval('xxl_job_info_id_seq'::regclass);ALTER TABLE "public"."xxl_job_log" alter column ID set default nextval('xxl_job_log_id_seq'::regclass);ALTER TABLE "public"."xxl_job_log_report" alter column ID set default nextval('xxl_job_log_report_id_seq'::regclass);ALTER TABLE "public"."xxl_job_logglue" alter column ID set default nextval('xxl_job_logglue_id_seq'::regclass);ALTER TABLE "public"."xxl_job_registry" alter column ID set default nextval('xxl_job_registry_id_seq'::regclass);ALTER TABLE "public"."xxl_job_group" alter column ID set default nextval('xxl_job_group_id_seq'::regclass);

第四步,进入 Postgre 数据库中,右键设计每个表,对 int 类型且 Not Null 的字段设置默认值为 0 。这一步非常关键,因为日志表有几个字段入库时未传值,轮询后更新的,没有默认值,插入 SQL 无法通过 Not Null 的检查而异常。

MyBatisMapping 调整

到 mybatis-mapper 文件夹下,修改各个 Mapper 文件,使其适配 Postgre 语法,主要有三个地方:

去掉转义符 ` ,直接用空格替换修改 LIMIT #{offset}, #{pagesize}LIMIT #{pagesize} OFFSET #{offset} ,涉及到查询的地方都需要调整时间函数,如:XxlJobRegistryMapper.xml 文件中 findAllfindDead 查询语句,DATE_ADD(#{nowTime},INTERVAL -#{timeout} SECOND) 修改为 ((select NOW())-INTERVAL '${timeout} S') 。数据库连接配置

第一步,pom.xml 中添加 Postgre 驱动,maven 官网找最一个较高的版本。

<dependency>			<groupId>org.postgresql</groupId>			<artifactId>postgresql</artifactId>			<version>42.2.19</version>		</dependency>

第二步,修改 admin 模块下的 application.properties 文件,数据库连接配置信息改为 Postgrel 。

### xxl-job, datasourcespring.datasource.url=jdbc:postgresql://IP:5432/xxl-jobspring.datasource.username=usernamespring.datasource.password=passwordspring.datasource.driver-class-name=org.postgresql.Driver

检查一遍所有的配置,然后在本机直接启动测试。

启示录

本来以为这个开源框架应该是支持所有类型数据库的额呢,验证其他数据库的适配情况时,才发现官网 doc 目录下数据库只有一个 MySQL ,看 issues 说适配需要自己改 mapper 映射文件。

好在它不像 Azkaban 那样把 SQL 集成在代码中,所以就自己改造一下,还是比较顺利的,汇总称此文,希望给需要改造的同行一点启发!

本站所有软件信息均由用户上传发布,版权归原著所有。如有侵权/违规内容,敬请来信告知邮箱:764327034@qq.com,我们将及时撤销! 转载请注明出处:https://www.ssyg068.com/kuaixun/1838.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年06月16日
下一篇 2024年06月16日

相关推荐

  • 学习Postgresql

    前言数据库中个人还是喜欢PostgreSql,当然在工作中使用SqlServer最多,次之是Oracle,基本上没使用过MySql,这里使用Java,主要是为了学习.感觉篇幅过长,便进行了拆分(2017.08.26).下载并安装PostgreSql,这里以Windows版本为主下载PostgreSql JDBC驱动和文档(主要是看在Java如何使

    2024-06-08 21:00:01
    341 0

发表回复

8206

评论列表(0条)

    暂无评论

binance币安交易所
已有2000万用户加入币安交易所

立即下载