tidb 5.4升级到6.5后,应用报错,后来发现如下sql的exists返回的是布尔型,本来在5.4返回的是0和1 (int)

【 TiDB 使用环境】测试
【 TiDB 版本】6.5.0

@Query(value = “SELECT exists(SELECT * from t_paper_question_operation_log where target_id = ?1)”, nativeQuery = true)
int existsTargetId(String targetId);

上面这个业务代码原本在5.4.2 是ok的,但在tidb升级到6.5.0后,同样的代码,会报错如下:

初步判断是在6.5.0里 exists返回的是布尔型,但在原本的5.4.2 是返回 整型的1和0 ,应用如果要适配6.5.0 要大范围改动,有没有什么办法可以解决呢。

在官方文档找过一圈,也没有发现exists的相关说法

这确实不好办,不知道有没有参考可以控制优化器版本的。。好像没找到
不行的话你只能再换个低点的版本测试了

在sql里面加个case when 在强行转为boolean吧

历史遗留问题 有大量代码要改动~~想有没有办法避免

进行升级回退 :grin:

升级主要是为了解决那个全局id不连续的问题 :joy:

自增id不连续?6可以解决?

是的,官方是说6.4开始解决了这个问题。
https://docs.pingcap.com/zh/tidb/stable/auto-increment#mysql-兼容模式

哦哦,不过升级前最好还是需要提前做一些测试 :joy: