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遇到的坑,请看文章来源:https://www.toymoban.com/news/detail-708769.html
doris数据库操作数字遇到的问题_CS_草祭先生的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-708769.html
到了这里,关于mybatis执行自带update方法遇到的坑的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!