Error Code: 2013. Lost connection to MySQL server during query - 错误码:2013,在查询 MySQL 服务器时失去连接

当我试图通过 MySQL Workbench 给一张表添加索引的时候,我得到Error Code: 2013. Lost connection to MySQL server during query错误。 我还注意到,每当我运行执行时间比较长的查询时,错误就会出现。< / p >

所以,我想知道是否有增加超时值的方法?

800777 次浏览

使用命令行选项net_read_timeout / wait_timeout和一个合适的值(以秒为单位)启动DB服务器——例如:--net_read_timeout=100

参考在这里在这里

你应该在mysql配置文件中设置'interactive_timeout'和'wait_timeout'属性为你需要的值。

新版本的MySQL WorkBench有一个选项可以更改特定的超时时间。

对我来说,它是在编辑→首选项→SQL编辑器→DBMS连接读取超时时间(秒):600

将值更改为6000。

此外,不勾选限制行,因为每次我想搜索整个数据集时都要设置一个限制,这会让人感到厌烦。

只需执行一个MySQL升级,将重新构建innoDB引擎,以及重建MySQL正常运行所需的许多表,如performance_schemainformation_schema等。

从你的shell中发出下面的命令:

sudo mysql_upgrade -u root -p

如果您的查询有blob数据,此问题可以通过应用my.ini更改如本答复所提议来修复:

[mysqld]
max_allowed_packet=16M

默认情况下,这将是1M(允许的最大值是1024M)。如果提供的值不是1024K的倍数,它将自动舍入到1024K的最接近倍数。

虽然引用的线程是关于MySQL错误2006,设置max_allowed_packet从1M到16M 做了修复2013年的错误,为我运行一个长查询时出现。

对于WAMP用户:你会在[wampmysqld]部分中找到这个标志。

请尝试取消在编辑→首选项→SQL查询中的限制行

因为你应该在mysql配置文件中设置'interactive_timeout'和'wait_timeout'属性为你需要的值。

我知道它很老,但在mac上

1. Control-click your connection and choose Connection Properties.
2. Under Advanced tab, set the Socket Timeout (sec) to a larger value.

在/etc/mysql/cnf文件中增加如下内容:

innodb_buffer_pool_size = 64M

例子:

key_buffer              = 16M
max_allowed_packet      = 16M
thread_stack            = 192K
thread_cache_size       = 8
innodb_buffer_pool_size = 64M
SET @@local.net_read_timeout=360;

警告:当您在远程连接中应用它时,以下将不起作用:

SET @@global.net_read_timeout=360;

编辑: 360是秒数

如果您在恢复一个大转储文件期间遇到这个问题,并且可以排除与网络有关的问题(例如在本地主机上执行),那么我的解决方案可能会有帮助。

我的mysqldump至少有一个INSERT太大,mysql无法计算。你可以在mysql-cli中输入show variables like "net_buffer_length";来查看这个变量。 你有三种可能:

  • 在mysql ->中增加net_buffer_length,这将需要重新启动服务器
  • 使用--skip-extended-insert创建转储,每个插入一行使用->,虽然这些转储读起来更好,但不适合大转储> 1GB,因为它往往非常慢
  • 使用扩展插入(这是默认值)创建转储,但限制net-buffer_length,例如使用--net-buffer_length NR_OF_BYTES,其中NR_OF_BYTES小于服务器的net_buffer_length ->我认为这是最好的解决方案,尽管更慢,不需要重新启动服务器。
我使用以下mysqldump命令: mysqldump --skip-comments --set-charset --default-character-set=utf8 --single-transaction --net-buffer_length 4096 DBX > dumpfile < / p >

在“编辑->首选项->SQL编辑器->MySQL会话”中修改“读取超时”时间

检查有关

OOM on /var/log/messages ,
modify innodb_buffer_pool_size value ; when load data , use 50% of os mem ;

希望这能有所帮助

这通常意味着你有“与当前版本的MySQL服务器不兼容”,参见mysql_upgrade。我也遇到了同样的问题,我不得不跑掉:

< p > mysql_upgrade——密码

. mysql_upgrade: mysql_upgrade: mysql_upgrade: mysql_upgrade
我在加载.csv文件时遇到了同样的问题。

. txt文件

使用下面的命令,我设法解决这个问题。

mysql -u <user> -p -D <DB name> < file.sql

希望这能有所帮助。

此错误消息有三个可能的原因

  1. 通常这表明网络连接有问题,如果经常发生这种错误,您应该检查网络的状况
  2. 有时,当数百万行作为一个或多个查询的一部分发送时,就会出现“during query”形式。
  3. 更罕见的情况是,当客户端尝试到服务器的初始连接时,也会发生这种情况

更多详细信息阅读> >

原因2:

SET GLOBAL interactive_timeout=60;

从默认的30秒到60秒或更长时间

原因3:

SET GLOBAL connect_timeout=60;

我也遇到过同样的问题。我相信当您有较大表的外键时(这需要时间)就会发生这种情况。

我尝试运行create table语句再次没有外键声明,并发现它工作。

然后在创建表之后,我使用ALTER table查询添加外键约束。

希望这能帮助到一些人。

如果这里所有其他解决方案都失败了,请检查您的syslog (/var/log/syslog或类似),看看您的服务器在查询期间是否内存不足。

当innodb_buffer_pool_size设置得太接近物理内存而没有配置交换文件时出现此问题。MySQL建议将innodb_buffer_pool_size设置为物理内存的80%左右,我把它设置为90%左右,内核正在杀死mysql进程。将innodb_buffer_pool_size移回80%左右,解决了这个问题。

这发生在我身上,因为我的innodb_buffer_pool_size被设置为大于服务器上可用的RAM大小。事情因此被中断,然后它发出这个错误。修复方法是用正确的innodb_buffer_pool_size设置更新my.cnf。

至:

编辑->首选项-> SQL编辑器

在“MySQL Session”组中可以看到三个字段,现在可以在其中设置新的连接间隔(以秒为单位)。

原来我们的防火墙规则阻止了我连接MYSQL。在解除防火墙策略以允许连接后,我能够成功地导入架构。

我也有同样的问题-但对我来说,解决方案是一个拥有严格权限的DB用户。 我必须允许在mysql表上使用Execute能力。在允许之后,我不再有下降连接

首先检查索引是否到位。

SELECT *
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = '<schema>'
我在运行一个存储过程时遇到了这个问题-它正在数据库中创建大量的行到一个表中。 我可以在时间超过30秒边界后看到错误

我尝试了其他答案中的所有建议。我确信其中有一些帮助,然而,真正让我有用的是从Workbench切换到SequelPro。

我猜这是一些客户端连接,我不能在Workbench中发现。

如果您正在使用SQL工作台,您可以尝试使用索引,通过添加索引到您的表,要添加索引,单击扳手(扳手)符号在表上,它应该打开表的设置,下面,单击索引视图,键入索引名称并设置类型为索引,在索引列中,选择表中的主列。

对其他表上的其他主键执行相同的步骤。

进入工作台编辑→首选项→SQL编辑器→DBMS连接读取超时时间:高达3000。

.错误不再发生

对于那些使用SSH连接到MySQL数据库的人来说,这里似乎缺少一个答案。你需要检查两个地方,而不是其他答案建议的1:

工作台编辑→首选项→SQL编辑器→DBMS

工作台编辑→首选项→SSH→超时

我的默认SSH超时设置得很低,导致了一些(但显然不是全部)超时问题。之后,不要忘记重新启动MySQL工作台!

最后,你可以联系你的数据库管理员,让他们增加wait_timeout &Interactive_timeout属性在mysql本身通过my.conf + mysql重启或做一个全局设置,如果重启mysql不是一个选项。

希望这能有所帮助!

要遵循并确保三件事:

  1. 多次查询是否显示失去连接?
  2. 在MySQL中如何使用set query ?
  3. 如何同时删除+更新查询?

答案:

  1. 总是尝试删除定义器,因为MySQL创建了自己的定义器,如果涉及多个表进行更新,尝试进行单个查询,因为有时多个查询显示丢失连接
  2. 总是SET值在顶部,但如果它的条件不涉及SET值,则在DELETE之后。
  3. 如果这两个操作在不同的表上执行,先使用删除,再使用更新

在我的例子中,将连接超时间隔设置为6000或更高的时间没有起作用。

我只是做了工作台允许我做的事情。

查询从DBMS返回数据所需的最大时间。设置0跳过读超时。

< p >在Mac 参数设置-> SQL编辑器->进入MySQL会话->设置连接读取超时时间为0

它工作😄

我有这个错误消息,由于一个问题后升级Mysql。错误出现立即后,我试图做任何查询

检查mysql错误日志文件在路径/var/log/mysql (linux)

在我的情况下,重新分配Mysql的所有者Mysql系统文件夹为我工作

chown -R mysql:mysql /var/lib/mysql
有时候你的SQL-Server会陷入死锁,我遇到过这个问题100次了。你可以重新启动你的电脑/笔记本电脑来重新启动服务器(简单的方法),或者你可以去任务管理器services your - server - name(对我来说,它是MySQL785之类的)。右键单击>重新启动。 Try executed query again.

.输出说明
先建立连接 mysql --host=host.com --port=3306 -u username -p 然后选择你的db use dbname 然后source dumb source C:\dumpfile.sql\q

我的观察是

当你同时运行MySQL工作台和终端时,在终端中你会做-

SET AUTOCOMMIT = 0;

START TRANSACTION;

然后你通常会遇到这类问题。

甚至在那之后

SET AUTOCOMMIT = 1;

COMMIT;

问题依然存在。

您需要同时从终端和MYSQL工作台注销,然后重新登录或重新启动。

根据我所理解的,此错误是由于read timeoutmax allowed packet默认为4M引起的。如果你的查询文件超过4Mb,那么你会得到一个错误。这对我很有效

  1. 修改读超时时间。要进行更改,请访问Workbench Edit → Preferences → SQL Editorenter image description here < / >
< p > 2。通过编辑文件my.ini手动更改max_allowed_packet。要进行编辑,请到"C:\ProgramData\MySQL\MySQL Server 8.0\my.ini"。文件夹ProgramData文件夹是隐藏的,所以如果你没有看到,那么选择在视图设置中显示隐藏文件。在my.ini文件中设置max_allowed_packet = 16M。 3.重新启动MySQL。如果要重新启动,请到win+ R -> services.msc并重新启动MySQL

使用MySql Server 8.0.28社区版,在我的模式中创建了100多个表。MySql服务器不能正常工作,多次崩溃。我发现了问题和解决方案。

我写了“select count(*) from table1..table100”;查询并在.sql文件中运行。

问题1:MySql服务器设置utf8mb4和我的表创建utf8。

解决方案1:必须设置表和列,或者使用utf8mb4重新创建。

问题2:back_log参数需要重新配置。

解决方案2:set back_log=50+(coonectioncount/5)

问题3:wait_timeout参数需要重新配置。

解决方案3:您必须将其设置为180+(您可以尝试较大的值)

这个行动解决了我的问题。

尝试应用LIMIT

跟我来

最初,查询是

SELECT * FROM TABLE1;

这是Error Code: 2013. Lost connection to MySQL server during query

解决方案

在应用LIMIT之后

SELECT * FROM TABLE1 LIMIT 10;

它工作。当再次尝试查询w/o LIMIT时,也可以工作。

注意:如果这对你有效,并且你知道为什么它有效,请评论。

合十礼🙏

对我来说,以上都没用。然后我尝试停止mysql服务,并再次启动它,神奇地查询开始运行:D。

$ sudo service mysql stop
$ sudo service mysql start

希望这能有所帮助