前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >XXL-JOB 2.4.1 版本适配数据库 PostgreSQL 的完整流程

XXL-JOB 2.4.1 版本适配数据库 PostgreSQL 的完整流程

作者头像
FoamValue
发布2023-08-18 14:14:05
1.8K8
发布2023-08-18 14:14:05
举报
文章被收录于专栏:FoamValueFoamValue

XXL-JOB 适用范围还是比较广泛的,特别使用快速部署使用,以及简单的集群部署。本文主要记录了一次 XXL-JOB 适配 PostgreSQL 数据库的完整流程。

版本信息:XXL-JOB 2.4.1、MySQL 5.7、PostgreSQL 15.3

以下是正文内容:


‍‍‍‍一、获取源代码

1.1、通过命令获取

代码语言:javascript
复制
git clone https://gitee.com/xuxueli0323/xxl-job.git

1.2、通过网页下载 ZIP 压缩包

二、创建数据库

2.1、使用源码自带的数据库 SQL 文件,创建 MySQL 数据库。

2.2、创建一个 Postgre SQL 数据库

代码语言:javascript
复制
# 创建一个 xxl_job 用户,密码是 123456
CREATE USER xxl_job WITH PASSWORD '123456';
# 创建一个 xxl_job 数据库,属于 xxl_o=job 用户
CREATE DATABASE xxl_job OWNER xxl_job;
# 将 xxl_job 数据库授权给 xxl_job 用户
GRANT ALL PRIVILEGES ON DATABASE xxl_job TO xxl_job;

2.3、使用 Navicat 工具将 MySQL 数据库数据传输到 PostgreSQL 数据库

2.4、修改 PostgreSQL 数据库表设计

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

2.5、创建 PostgreSQL 序列

代码语言:javascript
复制
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;

2.6、修改 PostgreSQL 数据库表自增主键

代码语言:javascript
复制
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);

三、代码部分

3.1、修改 POM.xml 依赖

删除 MySQL 数据库依赖:

代码语言:javascript
复制
<!-- mysql -->
<dependency>
  <groupId>com.mysql</groupId>
  <artifactId>mysql-connector-j</artifactId>
  <version>${mysql-connector-j.version}</version>
</dependency>

添加 PostgreSQL 数据库依赖:

代码语言:javascript
复制
<!-- PostgreSQL -->
<dependency>
  <groupId>org.postgresql</groupId>
  <artifactId>postgresql</artifactId>
  <version>42.6.0</version>
</dependency>

3.2、修改配置文件

删除 MySQL 配置文件:

代码语言:javascript
复制
### 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=root_pwd
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

添加 PostgreSQL 配置文件:

代码语言:javascript
复制
### xxl-job, datasource
spring.datasource.url=jdbc:postgresql://localhost:5432/xxl_job
spring.datasource.username=xxl_job
spring.datasource.password=123456
spring.datasource.driver-class-name=org.postgresql.Driver

3.3、修改 Mapper 文件

  • 去掉转义符 ` ,直接用空格替换。
    • 注意 findLogReport 的语句需要修改为 as "xx" 。
  • 修改 LIMIT #{offset}, #{pagesize} 为 LIMIT #{pagesize} OFFSET #{offset} 。
  • 修改DATE_ADD(#{nowTime},INTERVAL - #{timeout} SECOND) 为 ((select NOW())-INTERVAL '${timeout} S') 。
  • 修改 WHERE !( 为 WHERE not ( 。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-07-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Alan 手记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档