当前位置: 首页 > news >正文

xxl-job适配postgresql数据库

xxl-job支持了mysql数据库,其他的数据库适配得自己弄一下,下面以目前最新的2.4.1为例进行说明适配postgresql数据库的过程。

获取源代码

从github或gitee获取源代码,目前最新版本2.4.1

xxl官网:分布式任务调度平台XXL-JOB

建立数据库

源代码的doc目录下有mysql建库脚本,在mysql中利用脚本建立数据库,

利用navicat的数据传输功能,将mysql数据库导入到postgresql中,

使用 Navicat 编辑器,手动修改所有表的数字类型字段,添加默认值 0。主键不用添加默认值。例如: int4 NOT NULL 类型为默认 0。

创建 PostgreSQL 序列

CREATE SEQUENCE xxl_job_user_id_seq START 1;
CREATE SEQUENCE xxl_job_info_id_seq START 1;
CREATE SEQUENCE xxl_job_log_id_seq START 1;
CREATE SEQUENCE xxl_job_log_report_id_seq START 1;
CREATE SEQUENCE xxl_job_logglue_id_seq START 1;
CREATE SEQUENCE xxl_job_registry_id_seq START 1;
CREATE SEQUENCE xxl_job_group_id_seq START 1;

 修改 PostgreSQL 数据库表自增主键

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);

修改源代码

修改 POM.xml 依赖,添加postgresql

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

在resource下面新建两个文件夹,mysql和postgresql,将mybatis-mapper文件夹下的xml文件拷贝到这两个文件夹下:

修改配置文件,指定xml文件的路径和数据库配置,这样以后就可以兼容两种数据库,根据配置信息使用相应的数据库。

mybatis.mapper-locations=classpath:/postgresql/*Mapper.xml### xxl-job, datasource
#spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
#spring.datasource.username=root
#spring.datasource.password=123456
#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:postgresql://127.0.0.1:5432/xxl_job?currentSchema=public
spring.datasource.schemaName=public
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=org.postgresql.Driver

修改postgresql目录下的 Mapper 文件 

  • 去掉所有字段名的转义符 ` ,直接用空格替换。
  • 修改 LIMIT #{offset}, #{pagesize} 为 LIMIT #{pagesize} OFFSET #{offset} 。修改LIMIT 0, #{limit}为LIMIT #{limit} OFFSET 0。修改LIMIT 0, #{clearBeforeNum}为LIMIT #{clearBeforeNum} OFFSET 0。LIMIT #{pagesize}保持不变。
  • 修改DATE_ADD(#{nowTime},INTERVAL - #{timeout} SECOND) 为 (#{nowTime}::timestamp - '${timeout} SECONDS'::interval)
  • 修改 WHERE !( 为 WHERE not ( 。

编译运行,成功

修改后的源代码及数据库建库脚本:

https://download.csdn.net/download/xuruilll/88576748

相关文章:

  • Postgresql数据库运维统计信息
  • runapi的学习记录
  • Qt 自定义标题栏
  • 拼多多商品API接口接入说明
  • 编程的重要性及解决技术难题的方法
  • android BSP 开发总结之四
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • P8599 [蓝桥杯 2013 省 B] 带分数(dfs+全排列+断点判断)
  • JavaScript包装类型
  • Oracle常用系统变量
  • 93.STL-系统内置仿函数
  • Java面向对象第7天
  • 深度学习笔记《一》:keras_core.layers.Conv2D()
  • 插入区间[中等]
  • interface previously declared 的bug问题
  • JavaWeb(学习笔记二)
  • Js基础——数据类型之Null和Undefined
  • Linux中的硬链接与软链接
  • Next.js之基础概念(二)
  • PHP的类修饰符与访问修饰符
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • Vim 折腾记
  • webpack4 一点通
  • 排序算法学习笔记
  • 王永庆:技术创新改变教育未来
  • HanLP分词命名实体提取详解
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 我们雇佣了一只大猴子...
  • !!java web学习笔记(一到五)
  • #pragma预处理命令
  • $.ajax()参数及用法
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (day 12)JavaScript学习笔记(数组3)
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (SpringBoot)第七章:SpringBoot日志文件
  • (ZT)一个美国文科博士的YardLife
  • (动态规划)5. 最长回文子串 java解决
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .gitignore文件—git忽略文件
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .Net CF下精确的计时器
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .NET值类型变量“活”在哪?
  • .project文件
  • /bin/bash^M: bad interpreter: No such file or directory
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?
  • [ JavaScript ] JSON方法
  • [20160807][系统设计的三次迭代]
  • [bzoj1912]异象石(set)
  • [CSS]中子元素在父元素中居中