【问题标题】:Lost connection to MySQL server during query查询期间丢失与 MySQL 服务器的连接
【发布时间】:2015-09-22 16:32:25
【问题描述】:

在 MYSQL Workbench 上,我正在运行这个查询:count(*) from test.nameTable 我在这个表中有几百万行。 过了一会儿我得到这个错误:Lost connection to MySQL server during query
我在其他地方看到了这个问题及其答案,但没有一个答案有帮助。
我尝试将所有超时和数据包大小全局变量设置为它们的最大值,并以某种方式拆分我的查询.. 但是这些方法都不起作用。

SET GLOBAL connect_timeout=10000000
SET GLOBAL net_read_timeout=10000000
SET GLOBAL max_allowed_packet=1073741824

有人知道可能是什么问题以及如何解决吗?

【问题讨论】:

  • 对索引列进行计数
  • 索引列与其他列不同吗?我尝试了主键 - 它也没有工作
  • 表是什么存储类型(MyISAM、InnoDB 等)?我似乎记得这对 COUNT 有很大影响...
  • 存储引擎是InnoDB
  • 您是在服务器上运行客户端,还是从另一台机器上运行?如果从另一台机器上,我看到这种类型的错误是由与 MySQL 完全无关的东西引起的:防火墙 NAT 超时 5 分钟。不用说,对于一个需要 5 分钟的查询,有些地方是错误的,但我之前已经看到过由它引起的超时。

标签: mysql sql mysql-workbench


【解决方案1】:

如果您从 MySQL Workbench 运行(我可以阅读您的评论,请更新问题),该程序有自己的超时。

如果您进入程序菜单,首选项 -> SQL 编辑器,您有以下选项:

MySQL 会话: DBMS 连接保持活动间隔(以秒为单位): DBMS 连接读取超时(以秒为单位): DBMS 连接超时(以秒为单位):

如果您阅读了这些选项的描述,您可以在第二个选项中看到工作台等待服务器响应的时间。

【讨论】:

    【解决方案2】:

    如果没有从表中删除任何行,则主键将描述总行数,在这种情况下您可以尝试

    SELECT MAX(pk) FROM test.nameTable
    

    不确定它会更快,但也许值得一试?

    【讨论】:

      猜你喜欢
      • 2012-11-15
      • 1970-01-01
      • 2015-11-22
      • 1970-01-01
      • 2020-07-11
      • 2020-12-05
      • 1970-01-01
      • 2015-06-27
      • 1970-01-01
      相关资源
      最近更新 更多