首页新闻找找看学习计划

数据查询Unsupported command错误

0
悬赏园豆:80 [待解决问题]

错误如下:

Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Unsupported command

The error may exist in class path resource [mapper/WholesaleOrderDAOMapper.xml]

The error may involve defaultParameterMap

The error occurred while setting parameters

SQL: SELECT ....

项目多个模块,不同sql都会不时报出这个错误,开始我以为是sql写的有问题,后面发现都能正常执行;后面觉得可能是sql太复杂,执行慢超时什么的,但是有的sql很简单也报这个错误。在百度,谷歌,mysql官网,stack overflow等网站都搜索过,但是找不到这个Unsupported command的原因,这个异常的信息倒是有,不过别人都是一些其他的原因,比如连接池连接过多什么的。
后来,发现mycat的ServerQueryBuilder这个类中会对sqlType进行判断,当判断为KILLED_QUERY时就会报错Unsupported command,而我们的项目确实用了mycat做读写分离,这些select语句应该就是mycat报的错,事实上mycat错误日志有这个错误打印。
然后就难以再查下去了,我还是不知道是什么地方发的KILL QUERY xxx命令,而mycat不支持该命令,才报了这个错,现在也没有解决。

jasmhusc的主页 jasmhusc | 初学一级 | 园豆:122
提问于:2020-01-20 17:28
< >
分享
所有回答(1)
0

我是因为mybatis.configuration.default-statement-timeout设置为30秒,sql执行了51秒导致的druid discard connection。
报错如下:2020-01-20 16:08:16.428 ERROR http-nio-10335-exec-8 com.alibaba.druid.pool.DruidDataSource handleFatalError 1777 logId:2923847472489 - discard connection
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Unsupported command

从错误日志来看就是数据库连接被释放了,然后你再想操作连接就提示了不支持的命令,所以我的情况有两种办法解决这个问题,一个是临时方案:把mybatis.configuration.default-statement-timeout设置得大一些,另一个方案是优化查询效率缩短sql执行时间。

小黑鸟 | 园豆:202 (菜鸟二级) | 2020-01-21 02:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册