SpringBoot项目从mysql数据源改造为kingbase数据源的一些常见sql问题

本文总结了SpringBoot项目从mysql数据源切换到kingbase过程中遇到的常见问题,包括函数错误、字段不存在、操作符不支持、GROUP BY问题、变量定义、多表更新等,并提供了详细的解决方案,如调整SQL语法、使用转换函数、安装插件等。
摘要由CSDN通过智能技术生成

SpringBoot项目从mysql数据源改造为kingbase数据源的一些常见sql问题

函数xxx不是唯一的

在这里插入图片描述
类比这种报错,一般是参数的类型不对问题,例如这次的报错 TIMEDIFF(varchar,datetime)
查询官方文档,地址如下

https://help.kingbase.com.cn/v8/development/sql-plsql/sql/index.html

发现TIMEDIFF()函数的定义为:
在这里插入图片描述
而我们代码中函数认为第一个参数是varchar 所以参数类型不对造成了这次的报错,那么我们的目标就是让sql把第一个参数类型识别为data、timestamp、time的其中一个即可。
有两种解决方案:

  1. 在参数值后面加上 参数值::date 这种进行强行转换
  2. 使用函数CAST(参数值 AS 转换的类型) 进行转换
    示例:
TIMEDIFF(start_date::date,end_time::date)

TIMEDIFF(CAST(start_date AS DATE),CAST(end_time AS DATE))

函数xxx不存在

在这里插入图片描述
这种不存在的函数,一般是因为兼容模式导致部分函数不支持,也可能是缺少插件,也可能是本身kingbase就不存在的函数,故根据不同情况有不同的解决方案

1. 兼容模式导致的函数不支持
这种情况需要上官方文档中进行查询,官方文档地址:

https://help.kingbase.com.cn/v8/development/sql-plsql/sql/index.html

注意自己的数据库的兼容模式,执行sql:show database_mode;
在这里插入图片描述

根据自己的数据源兼容模式,去查询对应的函数,看是否存在满足需求的函数,如不存在,则需要找人大金仓的技术支持确认并询问是否需要增加插件

2. 缺少插件
我们可以找人大金仓的技术支持确认,也可以自己上官方文档上寻找看是否有自己需要的插件

官方插件文档地址:https://help.kingbase.com.cn/v8/development/sql-plsql/ref-extended-plug-in/index.html

插件的安装分两种:
第一种较为简单,直接使用sql命令安装插件。

CREATE EXTENSION 插件名称;

第二种在执行sql命令前需要对kingbase进行配置,找到kingbase的data目录,对kingbase.conf进行编辑,如果是linux环境直接vim kingbase.conf
在最后部分找到 shared_preload_libraries 在后面追加上需要的插件,多个插件逗号隔开

shared_preload_libraries = 'liboracle_parser, libmysql_parser, synonym, plsql, force_view, plugin_debugger, plsql_plugin_debugger, kdb_ora_expr, sepapower, dblink, sys_kwr, sys_spacequota, s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值