关于达梦网络通信异常问题

一.问题说明

springboot的项目,多数据源,其中一个数据源是达梦数据库。有个根据主键id查询详情的接口,一直报错网络通信异常,或连接尚未建立或者已经关闭。可以确保访问数据库的网络一切正常,单单一张表的接口一直报上述异常。

二.解决

一直以为是数据库或后台程序数据源配置问题,最后通过达梦jdbc日志,发现sql的param是setNull,也就是sql没有获得到id这个参数,前端传参格式有误,后台接收不到,但是达梦报错却是网络异常。

解决过程中的尝试:JAVA | 达梦技术文档

根据达梦官方文档,一条条查询是否有问题。最后发现都没有问题,于是就开启JDBC日志,查看sql异常详情。

达梦开启JDBC日志:

#springboot数据源配置,加上logLevel、logDir
eg:jdbc:dm://127.0.0.1:5236?logLevel=all&logDir=/home/damengLog
logLevel 表示日志级别,日志按从低到高依次如下:

off:不记录
error:只记录错误日志
warn:记录警告信息
sql:记录 sql 执行信息
info:记录全部执行信息
all:记录全部
高级别同时记录低级别的信息。

logDir 表示存放 JDBC 日志的路径,可以是相对路径也可以是绝对路径。

在JDBC日志中发现查询表的sql,id设值不正常是setnull,查询前端传参后,发现参数都是json字符串,而后台是对象接收的,导致id是null。发现问题原因就好处理了,将前端改好后,打包发布下就正常了。由于达梦异常提示“网络通信异常”,就没想过前端传参有问题,误认为是数据库或是数据源配置问题。

总结

这里就想吐槽下,达梦的异常是真的让人不知所云,还有表字段长度不够,提示的是“dm.jdbc.driver.DMException: 字符串截断”,难道就不能直接日志输出哪个字段不够长。希望国产数据库优化下使用体验,达梦管理工具也是难用的一比,过滤查询不人性化,数据导出也不好用。连接数据库还是得用dataGrip ,至少查询导出方便且效率高。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值