mysql(beetlsql框架)适配人大金仓(KingBase)有感

news2025/1/19 14:16:15

毁灭吧,前几天加班适配kingbase,发现坑是真滴多,小小总结一波。

tips:kingbase的语法可以直接参照pgsql...他们两个是通用的(应该)

 

1.    ` 的坑

在Mysql里面的 `(不是单引号!' 和 ` 还是有点区别的) 

这是拿来标识关键字,让mysql把字段识别为普通的字段,而不是把他当成关键字,比如group(吐槽:我们项目里面大量的使用了`,给我人改麻了)。

所有的在Kingbse全都得换成双引号 ",不然就会报错。

2. group_concat( )的坑

我在网上看见好多人是只需要平替换成wm_concat()就行了。。。。。

结果实际上运行下来,如果里面只是单个字段,确实可以平替。但是如果你使用group_concat的基础上,在里面对字段做了拼接,那么就会报找不到函数的错误。。。

比如

 group_concat( '(vuln-',oss_vulnerability.id,')', oss_vulnerability.cve_no)

这样的拼接。你就不能写成这样

wm_concat('(vuln-',oss_vulnerability.id,')', oss_vulnerability.cve_no)

这个地方你只能用另外的一种拼接方法来替换

 string_agg('(vuln-' || oss_vulnerability.id || ')' || oss_vulnerability.cve_no, ', ')

3.关键字字段的坑

我不太明白为什么beetlsql 对Mysql的适配对于关键字字段就能不报错。但是在Kingbase里面。比如你有一个字段是group,那么你使用beetlsql 的所有关于这个字段的,自带查询或者查找方法。都会报group旁边出错。这个地方要不然改字段。要不然把自带方法写成sql来使用。。。

啊啊啊啊!所以大家不要用sql的关键字,保留字做字段名。如果你想要获得鼓励的话,那我会微笑着对你说,我测你*(雪豹别叫)

4.group by的坑 

在kingbase里面,如果你使用了group by来查询 ,那么你查询的字段必须要在group by里面被分组,又或者必须在聚合函数里面。

举个栗子!

现在有一个表,有三个字段。a b c

现在写一条sql

select a,b,c from table group by a

在mysql中没什么问题。但是如果在Kignbase中必须要前后一一对应

select a,b,c from table group by a,b,c

或者对b,c使用聚合函数。

mysql可以对分组后的未知列选择第一条。但是kingbase 必须要你显示的指明分组之后,这个列到底使用哪条数据的值!

所以你要考量一下,这个对你的查询功能是否有影响。

5. No results were returned by the query的坑

改用kingbase之后,我自己写的insert语句,一直在报这个错误。我在网上搜了一下,说要用什么spring-data的@modifying注解。但是我项目又没有这个依赖。

实际上每一个数据库框架都应该有一个注解。拿来标识,这是一个更新数据的sql。而不是查找。比如在beetlsql里面使用@Update 加上它就没问题了

6.保命

 如果有任何错误,请及时告诉我。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/422600.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机械臂路径规划path planning

一、路径规划:假设机械臂的终端结构要从一个点运动到另一个点,我们要求所有的关节和终端机构在运动的过程中都不能碰到障碍物,这个称为路径规划。 1、路径规划算法主要可分成两种: (1)一种是基于搜索结果…

第十三天缓存一致性篇

目录 一、缓存的应用场景 二、缓存数据一致性如何保证? 三、缓存的最终一致性解决方案: 一、缓存的应用场景 1、缓存中的数据不应该是实时性一致性要求超高的, 通过缓存加上过期时间保证每天拿到的数据都是最新的即可。 2、如果实时性要求…

tcp通信,客户端服务端

进行过程 //TCP通信的流程 //服务器端(被动接受连接的角色) 1.创建一个用于监听的套接字 -监听:监听有客户端的连接 -套接字:这个套接字其实就是一个文件描述符 2.将这个监听文件描述符和本地的IP和端口绑定(IP和端口…

飞凌嵌入式AM62x核心板,赋能新一代HMI

HMI(人机界面)是系统和用户之间进行交互和信息交换的媒介,凡是涉及人机信息交流的领域都离不开人机界面,因此在许多行业内都能见到HMI的身影。随着技术的进步HMI也在持续发展和演进,除了数据收集、控制和显示外&#x…

在采购过程中保持供应商诚实的5种方法

不信任潜在供应商的心理在B2B买家中很常见。据报告称,供应商和买家之间存在着信任差距。这不是针对个人,而是健康的怀疑态度。谁不会对他们企业的潜在六七位数技术投资持怀疑态度? 企业和其供应商之间的关系通常是决定成败的关键。为此&…

SQL 条件函数 日期函数 文本函数 窗口函数

玩了几天,劳逸结合,继续复习刷题sql 一、条件函数 1.题目:现在运营想要将用户划分为25岁以下和25岁及以上两个年龄段,分别查看这两个年龄段用户数量(age为null 也记为 25岁以下) user_profile 期望结果&…

【论文阅读】MAMIL

1、基本信息 misc{Konstantinov_Utkin, title{Multi-Attention Multiple Instance Learning}, author{Konstantinov, AndreiV. and Utkin, LevV.} }2、摘要 本文提出了基于多注意力的MIL问题求解方法,该方法考虑了包中每个被分析实例的相邻实例。在该方法中&…

如何还原min.js文件

最近在看别人给的一个代码包,但是有一些文件是 xx.min.js ,这种文件在vscode中打开后是这样的 这种怎么阅读,太难了,于是全选,右键格式化文档,不管用 通过咨询群友,学到了: 回答一&#xff1…

vscode开发常用的工具栏选项,查看源码技巧以及【vscode常用的快捷键】

一、开发常用的工具栏选项 1、当前打开的文件快速在左侧资源树中定位: 其实打开了当前的文件已经有在左侧资源树木定位了,只是颜色比较浅 2、打开太多文件的时候,可以关闭 3、设置查看当前类或文件的结构 OUTLINE 相当于idea 查看当前类或接…

【计算机网络-数据链路层】流量控制与可靠传输机制

文章目录1 停止-等待协议1.1 无差错情况1.2 有差错情况——数据帧出错或丢失1.3 有差错情况——ACK 丢失1.4 有差错情况——ACK 迟到1.5 性能分析1.6 相关例题2 后退 N 帧协议(GBN)2.1 无差错情况2.2 超时重传、回退 N 帧2.3 相关例题3 选择重传协议&…

AX7A200教程(6): 串口接收图片数据,通过hdmi接口输出显示

本章节主要使用uart接收图片数据,然后通过ddr3缓存,最后通过hdmi接口显示输出,功能框图如下图所示 uart接收的图片数据位1024*768*3分辨率大小的数据,一共2359296个字节,输入图片如下图所示 图片属性 串口接收数据&…

基于matlab分析卫星星座对通信链路的干扰

一、前言此示例说明如何分析从中地球轨道 (MEO) 中的卫星星座到位于太平洋的地面站的下行链路上的干扰。干扰星座由低地球轨道(LEO)的40颗卫星组成。此示例确定下行链路闭合的时间、载波噪声加干扰比以及链路裕量。此示例需要卫星…

锚框+ssd v2 整合笔记

13.4. 锚框 — 动手学深度学习 2.0.0 documentation 13.7. 单发多框检测(SSD) — 动手学深度学习 2.0.0 documentation 锚框 一.归一化推导公式 目标检测SSD | Lee的个人博客 之前笔记有点错误 https://mp.csdn.net/mp_blog/creation/editor/129528…

输入电阻、输出电阻、特性阻抗、阻抗匹配

一、输入阻抗和输出阻抗 1.输入阻抗 输入阻抗(input impedance)是指一个电路输入端的等效阻抗。在输入端上加上一个电压源U,测量输入端的电流I,则输入阻抗Rin就是U/I。你可以把输入端想象成一个电阻的两端,这个电阻的阻值&#…

云原生助力数字原生企业业务快速迭代|阿里云峰会精彩回顾

导语: 4月11日,2023 阿里云峰会如期举行。一直以来,阿里云都积极融入企业数字原生创新发展的新浪潮,是中小企业走向数字原生坚实的支持者。阿里云坚持以数据和智能驱动,与合作伙伴、企业客户一起专注于技术创新&#x…

《Scikit Learn | MorvanZhou 》learning notes

学习资源 https://scikit-learn.org/stable/https://morvanzhou.github.io/tutorials/machine-learning/sklearn/ 文章目录1 Why Scikit Learn2 通用学习模式(牛刀小试 pipeline)3 sklearn 强大数据库(Loaders / Sample Generator&#xff0…

new/delete内存分配操作符

目录 一、C/C的内存分布 二、new与delete操作符 1.new/delete 的使用 2.new申请失败抛异常 3.new/delete操作内置类型 4.new/delete 操作自定义类型 三、operator new与operator delete函数 四、new和delete的实现原理 1.对于内置类型 2.对于自定义类型 ①new的实现…

Prophet学习(四)趋势Changepoints

目录 趋势Changepoints(Trend Changepoints) Prophet中的自动更改点检测(Automatic changepoint detection in Prophet) 调整趋势灵活性(Adjusting trend flexibility) 指定变更点的位置(Spe…

DnCNN-pytorch版本代码运行环境配置

一、DnCNN-pytorch相关下载 (1)DnCNN-pytorch版本代码下载 https://download.csdn.net/download/qq_41104871/87457414 (2)GPU版本的torch0.4.1下载 https://download.csdn.net/download/qq_41104871/87658469 (3)相对应的torchvision0.2.1下载 https://download.csdn…

Redis多级缓存搭建(结合案例学习)

文章目录一. JVM进程缓存1. 在docker中安装Mysql服务2. 向数据库中导入数据和导入案例代码3. 在dokcer中部署nginx服务器实现方向代理4. 在nginx目录下导入主页面5. 配置nginx实现反向代理6. 初步认识Caffine7. 使用Caffeine实现本地进程缓存8. 总结二. LUA语法1. 初识Lua2. 基…