我有一个远程MySQL数据库,而我的已部署应用程序(一些Java微服务应用程序)在进行某些SQL查询时始终遇到错误ERROR 2013 (HY000): Lost connection to MySQL during query
。然后,我尝试使用MySQL命令行客户端连接到mysql,执行相同的查询,并设法复制相同的错误。以下是跟随此页面https://dev.mysql.com/doc/refman/5.7/en/error-lost-connection.html
+------------------------------+----------+
| Variable_name | Value |
+------------------------------+----------+
| connect_timeout | 3600 |
| delayed_insert_timeout | 300 |
| have_statement_timeout | YES |
| innodb_flush_log_at_timeout | 1 |
| innodb_lock_wait_timeout | 5 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 7200 |
| lock_wait_timeout | 50 |
| net_read_timeout | 3000 |
| net_write_timeout | 6000 |
| rpl_semi_sync_master_timeout | 10000 |
| rpl_stop_slave_timeout | 31536000 |
| slave_net_timeout | 4 |
| wait_timeout | 7200 |
+------------------------------+----------+
+--------------------------+------------+
| Variable_name | Value |
+--------------------------+------------+
| max_allowed_packet | 1073741824 |
| slave_max_allowed_packet | 1073741824 |
+--------------------------+------------+
但是,从mysql命令行客户端执行大型SQL查询后,大约10分钟后,我系统地出现了相同的错误。
注意:在数据库服务器端,我注意到了日志[注意]与db的连接xxxxx已中止:'xxxxx'用户'xxxxx'主机'xxxxx'(在写入通信数据包时出错)
DBA在安装了mysql的服务器上成功执行了查询。但是我们必须将mysql作为服务远程使用。
如果有人能帮助我,我将不胜感激。
答案 0 :(得分:0)
最后,根本原因是网络问题。我们的远程MySQL实例作为服务公开。客户端和MySQL数据库之间还有一个额外的代理。默认情况下,如果客户端和服务器之间的通信超过10分钟,则连接将关闭。