错误代码:2013.查询期间与MySQL服务器的连接丢失

use*_*026 222 mysql sql database mysql-workbench

我得到了错误代码:2013.当我尝试使用MySQL Workbench向表添加索引时,在查询错误期间丢失了与MySQL服务器的连接.我还注意到每当我运行长查询时它就会出现.

有没有增加超时值?

小智 424

新版本的MySQL WorkBench可以选择更改特定的超时.

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

将值更改为6000.

同样取消选中限制行,因为每次我想搜索整个数据集时都会设置限制.

  • 重新启动后,即使读取超时设置为6000,它也会再次显示错误2013,因此这似乎不是一个解决方案. (6认同)
  • 在编辑→首选项→SQL查询中取消选中限制行 (4认同)
  • 记得重新启动Workbench并首先关闭所有打开的查询窗口! (4认同)
  • 是否可以在99,999秒内增加此限制?“ DBMS连接读取超时”字段最多只能接受5位数字,并且将该字段设置为0等效于默认参数(600秒)。(Windows 7 64位旗舰版,MySQL Workbench 5.2.47 CE) (2认同)
  • 在http://stackoverflow.com/q/16877574/395857之后,此问题现在已解决(http://bugs.mysql.com/bug.php?id=69395) (2认同)

Yah*_*hia 31

使用comandline选项net_read_timeout/ wait_timeout和合适的值(以秒为单位)启动数据库服务器- 例如:--net_read_timeout=100.

供参考,请参见此处此处.

  • 如何在命令行中提供此参数?当我尝试连接到DB时:mysql -u root -p --net_read_timeout = 60或当我尝试启动服务时?sudo服务mysql启动?它在两个地方都给出错误:未知变量'net_read_timeout' (6认同)

Har*_*rti 24

如果您的查询包含blob数据,则可以通过应用此答案中建议my.ini更改来解决此问题:

[mysqld]
max_allowed_packet=16M
Run Code Online (Sandbox Code Playgroud)

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

虽然引用的线程是关于MySQL错误2006,但设置max_allowed_packet从1M到16M 确实修复了在运行长查询时出现的2013错误.

对于WAMP用户:您将在该[wampmysqld]部分找到该标志.


小智 14

将以下内容添加到/ etc/mysql/cnf文件中:

innodb_buffer_pool_size = 64M
Run Code Online (Sandbox Code Playgroud)

例:

key_buffer              = 16M
max_allowed_packet      = 16M
thread_stack            = 192K
thread_cache_size       = 8
innodb_buffer_pool_size = 64M
Run Code Online (Sandbox Code Playgroud)

  • 你确定文件名`/ etc/mysql/cnf`是否正确?不应该是`/ etc/my.cnf`? (5认同)

小智 14

据我了解,这个错误是由于默认值是 4M 引起read timeoutmax allowed packet。如果您的查询文件超过 4Mb,则会出现错误。这对我有用

\n
    \n
  1. 更改读取超时。要更改,请转到Workbench Edit \xe2\x86\x92 Preferences \xe2\x86\x92 SQL Editor\n在此输入图像描述
  2. \n
\n

2. 通过编辑文件手动更改 max_allowed_pa​​cket my.ini。如需编辑,请转至"C:\\ProgramData\\MySQL\\MySQL Server 8.0\\my.ini". 该文件ProgramData夹是隐藏的,因此如果您没有看到,请在视图设置中选择显示隐藏文件。设置max_allowed_packet = 16Minmy.ini文件。\n3. 重新启动 MySQL。要重新启动,请转至win+ R -> services.msc并重新启动 MySQL。

\n


小智 11

SET @@local.net_read_timeout=360;
Run Code Online (Sandbox Code Playgroud)

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

SET @@global.net_read_timeout=360;
Run Code Online (Sandbox Code Playgroud)

  • 什么是360?毫秒、秒、分钟? (2认同)
  • 秒数 https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_net_read_timeout (2认同)

小智 9

谢谢!这很有效.但是使用mysqldb更新后,配置已成为:

max_allowed_pa​​cket的

net_write_timeout

net_read_timeout

mysql doc


Nan*_*mar 9

此错误消息可能有三种原因

  1. 通常它表示网络连接故障,如果频繁发生此错误,您应该检查网络状况
  2. 有时,当在一个或多个查询中发送数百万行时,会出现"在查询期间"表单.
  3. 更少见的是,当客户端尝试与服务器的初始连接时,可能会发生这种情况

有关详细信息, 请阅读>>

原因2:

SET GLOBAL interactive_timeout=60;
Run Code Online (Sandbox Code Playgroud)

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

原因3:

SET GLOBAL connect_timeout=60;
Run Code Online (Sandbox Code Playgroud)


Mak*_*cha 8

您应该将mysql配置文件中的'interactive_timeout'和'wait_timeout'属性设置为您需要的值.


The*_*tun 8

就我而言,将连接超时间隔设置为 6000 或更高的值不起作用。

我只是做了工作台说我可以做的事情。

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

在 Mac Preferences -> SQL Editor -> Go to MySQL Session -> 将连接读取超时间隔设置为 0。

它有效


Sho*_*han 7

只是对MySQL等的正常运作所需的许多表的重建以及执行MySQL的升级,将重新构建InnoDB引擎performance_schema,information_schema等等.

从shell发出以下命令:

sudo mysql_upgrade -u root -p
Run Code Online (Sandbox Code Playgroud)


小智 7

有时你的 SQL-Server 会陷入死锁,我已经遇到过这个问题 100 次了。您可以重新启动计算机/笔记本电脑来重新启动服务器(简单的方法),或者您可以转到任务管理器>服务>您的服务器名称(对我来说,它是 MySQL785 类似的东西)。然后右键单击>重新启动。尝试再次执行查询。


Aam*_*ood 6

我知道它很旧,但在 mac 上

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


Mat*_*t V 6

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

我的 mysqldump 至少保存了一个对 mysql 来说太大而无法计算的 INSERT。您可以通过show variables like "net_buffer_length";在 mysql-cli 中键入来查看此变量。你有三种可能:

  • 增加 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


小智 6

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