云数据库OceanBase入门教程 OceanBase 常见问题排查

2024-02-26 开发教程 云数据库OceanBase入门教程 匿名 3

出现错误信息 “Could not read resultset: unexpected end of stream, read 0 bytes from 4”

这是在与服务器通信时出现的问题。

在大多数情况下,这是由读取具有较大结果集的查询引起的。服务器通常希望客户端相对快速地读取结果集。 ​net_write_timeout​ 服务器变量控制此行为(默认为 60s)。如果客户端在这段时间内没有读取整个结果集,则服务器将丢弃该连接。如果不希望在此时间内处理结果,则可以使用查询 ​SET STATEMENT net_write_timeout = 10000 FOR XXX​,其中 ​XXX​ 是指“常规”查询。针对此查询将 ​net_write_timeout​ 设置为更长的时间(在此示例中为 10000)。

如果应用程序通常使用很多具有 Fetch Size 的长查询,则可以使用 ​sessionVariables = net_write_timeout = xxx​ 选项设置连接。

如何进行轻量级 Ping/ 以避免大量使用“SELECT 1”

Connection.isValid()​ 可以进行轻量级 ​Ping/​ 以避免大量使用 ​SELECT 1​。​Connection.isValid()​ 在 MySQL 协议中执行 Ping 操作,而不是执行网络 Ping 操作。