首批通过分布式安全可靠测评,为关键业务系统打造
与服务器的连接断开,错误代码 ERROR 2013
更新时间:2024-08-29 05:46
本文介绍 OceanBase 数据库 MySQL 模式下与服务器的连接断开并报 ERROR 2013 错误的处理方法。
问题现象
成功连接数据库后,会话空闲较长一段时间再执行查看 ordr 表数据的 SQL 语句,报连接断开的错误。
obclient [test]> SELECT * FROM ordr;
ERROR 2013 (HY000): Lost connection to MySQL server during query
可能原因
OceanBase 数据库中,当会话空闲时间超过指定的阈值时,系统将主动关闭当前连接,并在执行下一次操作时报 ERROR 2013 的错误。
解决方法
请参考以下步骤,查看并修改会话相关变量的值。以下设置变量的方法仅对当前会话有效,如果需要保证设置永久生效,请使用 SET GLOBAL 语法配置相同变量后,再重启会话使其生效。
重新连接到对应的 MySQL 租户。
查看系统与时间相关的变量。
obclient [test]> SHOW VARIABLES LIKE '%time%'; +---------------------------------+------------------+ | Variable_name | Value | +---------------------------------+------------------+ | connect_timeout | 10 | | default_password_lifetime | 0 | | error_on_overlap_time | OFF | | explicit_defaults_for_timestamp | ON | | interactive_timeout | 10000 | | lock_wait_timeout | 31536000 | | long_query_time | 10 | | max_execution_time | 0 | | net_read_timeout | 30 | | net_write_timeout | 60 | | ob_pl_block_timeout | 3216672000000000 | | ob_query_timeout | 10000000 | | ob_trx_idle_timeout | 86400000000 | | ob_trx_lock_timeout | -1 | | ob_trx_timeout | 86400000000 | | system_time_zone | +08:00 | | timestamp | 0 | | time_format | %H:%i:%s | | time_zone | +8:00 | | wait_timeout | 10000 | +---------------------------------+------------------+ 20 rows in set将变量
wait_timeout的值设置为28800。说明
变量
wait_timeout用于指定服务器关闭非交互连接前等待活动的秒数。obclient [test]> SET wait_timeout = 28800; Query OK, 0 rows affected将变量
interactive_timeout的值设置为28800。说明
变量
interactive_timeout用于指定服务器关闭交互式连接前等待活动的秒数。obclient [test]> SET interactive_timeout = 28800; Query OK, 0 rows affected再次查看
ordr表。可以正常查询。obclient [test]> SELECT * FROM ordr; +----+---------------------+---------------------+ | id | gmt_create | gmt_modified | +----+---------------------+---------------------+ | 1 | 2022-03-16 14:23:10 | 2022-03-16 14:23:10 | | 2 | 2022-03-16 14:23:10 | 2022-03-16 14:23:10 | | 3 | 2022-03-16 14:23:10 | 2022-03-16 14:23:10 | +----+---------------------+---------------------+ 3 rows in set