网站首页 > 教程分享 正文
背景
开源任务调度框架 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 文件中 findAll 和 findDead 查询语句,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, datasource
spring.datasource.url=jdbc:postgresql://IP:5432/xxl-job
spring.datasource.username=username
spring.datasource.password=password
spring.datasource.driver-class-name=org.postgresql.Driver
检查一遍所有的配置,然后在本机直接启动测试。
启示录
本来以为这个开源框架应该是支持所有类型数据库的额呢,验证其他数据库的适配情况时,才发现官网 doc 目录下数据库只有一个 MySQL ,看 issues 说适配需要自己改 mapper 映射文件。
好在它不像 Azkaban 那样把 SQL 集成在代码中,所以就自己改造一下,还是比较顺利的,汇总称此文,希望给需要改造的同行一点启发!
猜你喜欢
- 2024-10-25 PostgreSQL之慢SQL语句(如何解决慢sql)
- 2024-10-25 Postgresql语法(POSTGRESQL语法)
- 2024-10-25 python开发-操作postgresql数据库
- 2024-10-25 新手如何快速搭建多套PostgreSQL集群
- 2024-10-25 Postgresql基础操作实战(postgresql基础操作实战视频)
- 2024-10-25 一次近乎完美的PostgreSQL版本大升级实践
- 2024-10-25 数据库大师成长日记:您所不知道的PostgreSQL,值得收藏
- 2024-10-25 【PostgreSQL】AUTO_EXPLAIN - 慢速查询的日志执行计划
- 2024-10-25 postgresql安装及使用(postgresql安装使用)
- 2024-10-25 PostgreSQL系列(三):字符串类型操作(一)
你 发表评论:
欢迎- 最近发表
-
- IT之家学院:使用PIN或密码审批管理员权限
- Yarn 安装的时候提示错误 error:0308010C:digital envelope routines
- Windows常用的一些CMD运行命令(windows常见的命令)
- 电脑忘记开机密码10秒解决(戴尔电脑忘记开机密码10秒解决)
- 如何下载Windows 10聚焦提供的锁屏壁纸
- Windows CMD 命令大全:简单粗暴收藏!
- 系统小技巧:解决CHKDSK只读模式问题
- Windows的cmd都有哪些奇技淫巧?这22个CMD命令记得收藏起来!
- windows错误代码0x80072EE2?win10系统更新错误问题的处理方法
- Windows 10技术预览版快捷键方式汇总
- 标签列表
-
- css导航条 (66)
- sqlinsert (63)
- js提交表单 (60)
- param (62)
- parentelement (65)
- jquery分享 (62)
- check约束 (64)
- curl_init (68)
- sql if语句 (69)
- import (66)
- chmod文件夹 (71)
- clearinterval (71)
- pythonrange (62)
- 数组长度 (61)
- javafx (59)
- 全局消息钩子 (64)
- sort排序 (62)
- jdbc (69)
- php网页源码 (59)
- assert h (69)
- httpclientjar (60)
- postgresql conf (59)
- winform开发 (59)
- mysql数字类型 (71)
- drawimage (61)
本文暂时没有评论,来添加一个吧(●'◡'●)