Oceanbase更新longblob字段报错Error 1235 (0A000): Not supported feature or function

mysql是没问题的。我们原来业务是用mysql实现的,后续准备兼容ob。

好的,我找这边专业的同事来看一下这个问题
您那边mysql驱动版本,golang的版本麻烦提供一下

这两个驱动都试过,都有类似问题

menteslibres.net/gosexy/db/mysql

我这边go的版本是
go version go1.16.14 linux/amd64

麻烦老师帮忙试试。(目前自测的图片是15K左右)

你好,这边想收集下相关的日志

  1. 打开enable_rich_error_msg开关(后续可以关闭), alter system set enable_rich_error_msg=true;
  2. 执行程序,此时报错后会包含trace id;
  3. (需要确认OBD版本大于2.1.0,建议使用最新的obd版本),执行obd obdiag gather plan_monitor --trace_id ${上一步所拿到的trace id} (操作文档在 https://www.oceanbase.com/docs/community-obd-cn-1000000000197047
  4. 上传对应的日志日志包到帖子内即可

如果有操作里不太清楚的也可以回帖

我现在是用镜像4.0.0社区版部署,执行这个命令不对:

不是直接给trace_id哈,应该是–trace_id ${上一步所拿到的trace id}
完整的命令例如obd obdiag gather plan_monitor deploy_test_cluster --trace_id YB4264586CAD-000605D9FB0BD1C0-0-0

抱歉刚刚没有注意是docker部署的
流程需要做下更改,前两步保留
3.下载诊断工具https://github.com/oceanbase/oceanbase-diagnostic-tool/releases,并解压
4. 进入对应目录,更改这两个地方

配置成实际的值即可

5.执行

./obdiag gather  plan_monitor --trace_id ${上一步所拿到的trace id}

完整的命令例如./obdiag gather plan_monitor --trace_id YB4264586CAD-000605D9FB0BD1C0-0-0

6.上传日志包到帖子


命令不对吗?

麻烦按新的步骤执行下,刚刚是我没有注意这个部署方式

请问下这个配置在哪查啊?镜像哪个配置可以看呢?

在解压完成后进目录,理论上配置了OBCLUSTER那里面的目录即可

cluster_name可以通过查集群配置项获取SHOW PARAMETERS LIKE ‘cluster’; 然后取对应value列的值即可

这个用户名和密码在哪看呢? 我看镜像中的boot.yaml是这个admin/root

OBCLUSTER里的那个user和pd是对于集群的,user填root@sys pw如果不存在可以直接用两个单引号括号起来(猜测应该是这个原因所以报错)

配置可以参考

image

配置完以后,重新执行完对应的go的程序
拿到tranid后执行

./obdiag gather log --scope observer --grep=${上一步所拿到的trace id} --ob_install_dir=${远程主机上的ob_home地址} --since 10m

远程主机上的ob_home地址需要在容器上拿,进容器后看下对应observer的路径,比如为/work/obwork/bin/observer,就填/work/obwork/

另外,在改配置中private_key,这个参数需要使用绝对路径,否则容易报错

obdiag工具可以从官网的下载链接去下:https://www.oceanbase.com/softwarecenter

使用文档:https://www.oceanbase.com/docs/common-obdiag-cn-1000000000164123

执行完成之后可以看到这个日志的打包路径,上传这个zip包即可

go环境: 1.16/1.18
ob: 社区版4.0.0(docker部署)

测试的demo程序,建表语句,上传失败的图片都在附件中。
麻烦老师帮忙测试排查下。

附件
ob问题排查.zip (1.4 MB)

4.2.0版本未出现此问题,可能为已知bug,
仍需要提供日志包进行解析

[root@17e81d020a01 log]# cat /root/ob/log/*|grep YB427F000001-0006071AF6B30C9D-0-0
[2023-10-07 07:41:02.070455] INFO [SERVER] send_error_packet (obmp_packet_sender.cpp:304) [679][T1_TNT_L0_G0][T1][YB427F000001-0006071AF6B30C9D-0-0] [lt=5] sending error packet(err=-4007, extra_err_info=NULL, lbt()=“0xb553efb 0x576de1e 0x5729d96 0x419cc8d 0x3930f2a 0x392f401 0x4602029 0x39277e4 0x46025c7 0xb5380c7 0xb53303a 0x7f428aee8ea5 0x7f428ac1196d”)
[2023-10-07 07:41:02.070493] WARN [SERVER] process (obmp_default.h:42) [679][T1_TNT_L0_G0][T1][YB427F000001-0006071AF6B30C9D-0-0] [lt=26] MySQL command not supported(cmd=24)
[2023-10-07 07:41:02.070508] WARN [SERVER] disconnect (obmp_packet_sender.cpp:710) [679][T1_TNT_L0_G0][T1][YB427F000001-0006071AF6B30C9D-0-0] [lt=13] server close connection(sessid=3221487639, proxy_sessid=0, stack=“0xb553efb 0x5770c5e 0x57430fb 0x419ccb8 0x3930f2a 0x392f401 0x4602029 0x39277e4 0x46025c7 0xb5380c7 0xb53303a 0x7f428aee8ea5 0x7f428ac1196d”)
[2023-10-07 07:41:02.070522] INFO easy_connection_destroy_dispatch (easy_connection.c:3576) [679][T1_TNT_L0_G0][T1][YB427F000001-0006071AF6B30C9D-0-0] [lt=5] Shutting down socket with SHUT_RD, fd(139), conn(172.17.0.9:2881_10.55.69.45:28190_139_0x7f4202a04290 tp=0 t=1696664462068457-1696664462070434 s=0 r=2 io=1446736/101 sq=0), lbt(0xced3429 0xcebb28a 0xb7d5749 0x574311a 0x419ccb8 0x3930f2a 0x392f401 0x4602029 0x39277e4 0x46025c7 0xb5380c7 0xb53303a 0x7f428aee8ea5 0x7f428ac1196d ).

总结,由于测试版本4.0.0不支持sql_nio所导致send long data特性不支持。
另用户的生产环境版本为3.2.3,建议还是使用同版本作为测试环境的版本,由于部分版本特性不一致,可能会导致出现测试环境测试通过,生产环境报错的问题