1. 背景

        项目上需要对已有oracle数据源进行兼容改造,兼容doris数据源。改造过程中发现,启动项目时有一个类内部执行updateByPrimaryKeySelective时异常。把日志打印出的SQL复制到doris数据库执行,提示的错误与项目内一致,说明错误是数据库级别的,而非项目内部问题。错误信息如下

SQL 错误 [1105] [HY000]: errCode = 2, detailMessage = Only value columns of unique table could be updated.

该错误在oracle中不会抛出,而导致这个错误的原因,是因为update语句中的set中包含了

id=id!!!

至于为什么doris不支持这种语法,或者甚至都不知道doris是什么东西的各位,去自己找找看吧,反正网上能搜到doris的东西少之又少。

2. 解决

        还是熟悉的配方,无非就是各种网上查找无果而已。能找到的都是关于MyBatis实体类主键需要增加@id注解,更新才不会无效、错误等这些文章。其实都没错,只是不适用于本人这次遇到的问题罢了。毕竟这次是跟doris这种用的人少之又少的数据库打交道,遇到各种奇怪的问题也不足为奇了。

        究其原因,是因为项目中引用了内部一个包,而包里用到了mapper-4.0.1.jar这个jar包进行更新操作。反正就是pom文件内的配置各种套娃,找不到正常版本的方法。解决方案就是想办法把错误的包排除,使用正确的就行了。正常的jar包是mapper-base-4.2.2.jar

看是否引用对的jar包,只需要在方法上按住CTRL键+鼠标左键进入引用内部就知道了(这不会还有人不知道吧)。

3. 吐槽

        Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库。通过这句话就能看出,doris数据库引用场景及特点其实是用于数据分析,当然也不是不能用于增删改操作,但限制颇多。对于一般的业务系统,需要频繁进行增删改操作的场景下并不适用。而且还不支持事务,还不如用mysql,甚至国产的达梦都行。

PS:

关于更多doris遇到的坑,请看

doris数据库操作数字遇到的问题_CS_草祭先生的博客-CSDN博客

推荐文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: