xxl-job v2.0.1版本数据库改为Oracle

本文介绍了将应用从MySQL迁移到Oracle数据库的过程中需要注意的关键点,包括更改数据库驱动、调整表名前缀以避免长度限制、处理保留字、处理自增主键、修正SQL语法以及映射结果时的注意事项。通过具体的代码修改示例,展示了如何解决Oracle特有的问题,确保系统的顺利迁移。
摘要由CSDN通过智能技术生成

详细代码 https://gitee.com/echohawk/xxl-job/tree/v2.0.1-oracle/

 SQL脚本 doc/db/tables_xxl_job_oracle.sql · echohawkOuyang/xxl-job - Gitee.com

Oracle版本 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Product

其中要把Mysql改成Oracle数据库 有几个点需要注意

需要把使用Oracle的包

<dependency>
	<groupId>com.oracle</groupId>
	<artifactId>ojdbc6</artifactId>
	<version>${oracle-connector-java.version}</version>
</dependency>

改application.properties中的数据库驱动和配置 附上我的配置

spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@127.0.0.1:1521:ORCL
spring.datasource.username=lw
spring.datasource.password=lw1234

Oracle数据库因为字段和表不能有超过30个字符的 所以如果使用使用quartz的表前缀为XXL_JOB_QRTZ_的话 那么XXL_JOB_QRTZ_PAUSED_TRIGGER_GRPS这个表的表名将会超长 所以必须要把表的前缀改短 因为表的后缀是quartz框架中写死的 所以我把他改成了XXL_JOB_  详见xxl-job-admin/src/main/resources/quartz.properties · echohawkOuyang/xxl-job - Gitee.com

Oracle数据库不能有字段名为order的情况 属于是数据库的关键词 所以在后面加了_  而且oracle脚本中不允许有` 需要去掉(Mysql中如果关键词的话用``括起来就行)

 Oracle没有自增主键需要借助Oracle的序列 Mapper需要做出如下修改

 Oracle表名后的AS需要去除 之前的LIMIT分页需要改正 

 Oracle中的NOW() 需要改成sysdate 并且插入和更新最好加上参数的jdbcType的值 SQL结束的;去掉

 Oracle中的字段别名不能group排序 DATE_FORMAT需要改成to_char

 上面的SQL也可以改成

SELECT
			to_char(trigger_time,'yyyy-mm-dd') triggerDay,
			COUNT(handle_code) triggerDayCount,
			SUM(CASE WHEN (trigger_code = 200 and handle_code = 0) then 1 else 0 end) as triggerDayCountRunning,
			SUM(CASE WHEN handle_code = 200 then 1 else 0 end) as triggerDayCountSuc
		FROM XXL_JOB_QRTZ_TRIGGER_LOG
		WHERE trigger_time BETWEEN #{from} and #{to}
		GROUP BY to_char(trigger_time,'yyyy-mm-dd');

Oracle没有DATE_ADD(NOW(),INTERVAL -#{timeout} SECOND) 这种写法 需要改成 sysdate-numtodsinterval(#{timeout},'SECOND')

 Oracle把结果映射成Map 之后KEY值需要改成大写

 差不多就这些 其他的可以看看码云上的代码修改记录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值