签到成功

知道了

CNDBA社区CNDBA社区

DM8 SQL [-2685]:试图在blob或者clob列上排序或比较 错误解决方法

2022-12-06 21:40 3366 0 原创 DM 达梦
作者: dave

1 故障现象

研发反馈SQL 执行报如下错误:

从错误提示看是在LOB列上进行了排序或者比较,实际上表里并没有LOB列,只有2000 的VARCHAR。

http://www.cndba.cn/cndba/dave/article/116378

2 解决方法

我们这里先看解决方法,在分析背后的原因。

http://www.cndba.cn/cndba/dave/article/116378

解决方法就是修改参数ENABLE_BLOB_CMP_FLAG值为1:

sp_set_para_value(1,’ENABLE_BLOB_CMP_FLAG’,1)

select * from v$dm_ini where para_name=’ENABLE_BLOB_CMP_FLAG’;http://www.cndba.cn/cndba/dave/article/116378

虽然是动态参数,但是修改后,依然需要新建连接才生效;所以,修改参数后,依然需要重启应用或者重启数据库服务器。

官方文档里对该参数的说明:http://www.cndba.cn/cndba/dave/article/116378

ENABLE_BLOB_CMP_FLAG: 动态参数,可以在会话级别直接修改。 用来控制DB是否支持大字段类型的比较。0:不支持;1:支持,此时 DISTINCT、ORDER BY、 分析函数和集函数支持对大字段进行处理。

这里还需要注意一点,DM8 版本更新比较快,我们这里是在 1-2-114-22.03.04-158322-10045-ENT的版本里。 但是需要在更高级别的文档里才能查看到该参数,低版本的文档里是看不到这个参数。 http://www.cndba.cn/cndba/dave/article/116378

3 分析背后原因

在之前的博客,我们分析过列超长的问题,如下:

DM 达梦数据库 记录超长 错误解决方法
https://www.cndba.cn/dave/article/108596

http://www.cndba.cn/cndba/dave/article/116378

基表中,若没有指定 USING LONG ROW 存储选项时,插入 VARCHAR 数据类型的实际最大存储长度由数据库页面大小决定;如果指定了 USING LONG ROW 存储选项,则插入 VARCHAR 数据类型的长度不受数据库页面大小限制。VARCHAR 类型在表达式计算中的长度上限不受页面大小限制,为 32767。http://www.cndba.cn/cndba/dave/article/116378http://www.cndba.cn/cndba/dave/article/116378

我们表设计的时候,列的长度是2000,当超过2000,有可能默认转换成text了,因为一行不能超过32k。

但这个和我们报错貌似还并没有关系,我们查看官方手册,这两种类型的定义:

http://www.cndba.cn/cndba/dave/article/116378
http://www.cndba.cn/cndba/dave/article/116378

  1. CLOB类型用于指明变长的字符串,长度最大为 2G-1字节。
  2. TEXT变长字符串类型,其字符串的长度最大为 2G-1,可用于存储长的文本串。

因此我们可以推测在数据库内部,TEXT 应该是等同于CLOB。所以才会有我们之前的错误:

[-2685]:试图在blob或者clob列上排序或比较。

其实要避免这个问题,除了启用ENABLE_BLOB_CMP_FLAG参数外,也可以将VARCHAR的长度适当缩小一点。

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2283
    原创
  • 3
    翻译
  • 579
    转载
  • 196
    评论
  • 访问:8182315次
  • 积分:4428
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ