摘要: MySQL查询报错 Unknown type '245 in column 11 of 16 in binary-encoded result set 解决办法
关键词: MySQL、版本差异、报错、解决办法
整体说明
在使用MySQL的时候,出现这个报错,整理了一下解决思路,大致如下:
一、问题背景
工作中有个任务,是把MySQL 8.x的数据,同步数据到另外一个 MySQL 5.7.27版本 ,所以我就把表结构导出,然后在目的数据库直接执行了表结构,然后通过一个集成平台,直接把数据集成过去。
二、问题现象
- 建表语句正常执行,没有报错
- 集成任务正常执行,数据正常插入目的数据库,没有报错
- 查询表,报错 报错截图如下: 报错信息:ERROR: [S1000][0][耗时:94毫秒] Unknown type '245 in column 11 of 16 in binary-encoded result set.
三、问题分析
表结构信息
由报错信息和表结构分析得知,报错字段是JSON字段。
然后查阅官方文档,得知 MySQL服务端在 5.7.8版本支持JSON字段,MySQL客户端连接,在5.1.37版本开始支持JSON字段。
查询目的数据库的版本,得到 版本为5.7.27-log,说明服务端支持
查询执行SQL查询的客户端连接版本,得到对应版本为5.1.31版本,不支持。所以才会报错
四、解决方案
- 升级平台客户端 Java 驱动版本
- 把表结构中JSON字段类型,替换成LONGTEXT
五、最终解决
方案1可以永久解决,但是解决周期太长。 项目最终选择方案 2,修改所有带JSON字段的表结构为LONGTEXT,然后重新执行,解决查询报错问题。