关于达梦数据库

Viewed 14

基本信息
snail-job 版本:1.5.0
操作系统:win11
数据库类型:达梦数据库V8
你好,我是使用的狮子大佬的RuoYi-Vue-Plus,已经正确链接DM数据库启动成功,application-dev.yml配置如下:
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource

达梦数据库驱动

driver-class-name: dm.jdbc.driver.DmDriver

达梦数据库

url: jdbc:dm://127.0.0.1:5236/RY_VUE?SCHEMA=RY_VUE&compatibleMode=mysql&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: ***
password: ***

报错信息
打开首页时,DashboardServiceImpl类的taskRetryJob()方法查询在线Pods时报错,观察日志如下:
org.springframework.dao.DataIntegrityViolationException:

Error querying database. Cause: dm.jdbc.driver.DMException: 引用列未找到
The error may exist in URL [jar:file:/D:/WorkSpace/MavenRepository/com/aizuda/snail-job-mysql-datasource/1.5.0/snail-job-mysql-datasource-1.5.0.jar!/mysql/mapper/JobSummaryMapper.xml]
The error may involve defaultParameterMap
The error occurred while setting parameters
SQL: SELECT CONCAT(group_name, '/', (SELECT job_name FROM sj_job WHERE id = business_id)) AS name, SUM(fail_num) AS total FROM sj_job_summary WHERE (trigger_at >= ? AND trigger_at <= ? AND system_task_type = ? AND namespace_id = ?) GROUP BY namespace_id,group_name,business_id HAVING total > 0 ORDER BY total DESC LIMIT 10
Cause: dm.jdbc.driver.DMException: 引用列未找到
mapper仍然执行的是mysql的,请问还需要在哪里设置才能切换到snail-job-dm8-datasource-1.5.0.jar包下面的dm.mapper呢?

非常感谢

1 Answers

已解决,原因是因为jdbc的url中配置了compatibleMode=mysql,而在com.aizuda.snailjob.template.datasource.utils.DbUtils#getDbType中通过字符串判断contains时,检测到jdbcurl中有mysql导致的。
使用达梦数据库的同学请直接将数据库的COMPATIBLE_MODE改为4,在jdbcurl中就不要再加compatibleMode=mysql了