350

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

有没有增加超时值?

4

32 回答 32

650

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

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

将值更改为 6000。

每次我想搜索整个数据集时,未选中的限制行都会让人厌烦。

于 2012-10-08T22:49:13.540 回答
47

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

[mysqld]
max_allowed_packet=16M

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

虽然引用的线程是关于 MySQL 错误2006的,但将max_allowed_packet1M 设置为 16M确实修复了运行长查询时出现的 2013 错误。

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

于 2014-07-03T13:36:36.647 回答
39

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

有关参考,请参见此处此处

于 2012-05-12T12:17:27.523 回答
17

将以下内容添加到 /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
于 2015-04-17T15:11:36.287 回答
17
SET @@local.net_read_timeout=360;

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

SET @@global.net_read_timeout=360;

编辑: 360 是秒数

于 2015-04-20T03:58:19.997 回答
10

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

于 2012-05-12T12:19:04.527 回答
10

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

我只是做了工作台上说我能做的事情。

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

在 Mac 首选项 -> SQL 编辑器 -> 转到 MySQL 会话 -> 将连接读取超时间隔设置为 0。

它有效

于 2019-11-26T03:55:28.580 回答
10

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

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

更多详情 请阅读>>

原因 2:

SET GLOBAL interactive_timeout=60;

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

原因 3:

SET GLOBAL connect_timeout=60;
于 2016-12-08T06:30:24.940 回答
7

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

从您的 shell 发出以下命令:

sudo mysql_upgrade -u root -p
于 2014-05-19T20:16:38.563 回答
6

我知道它很旧,但在 Mac 上

1. Control-click your connection and choose Connection Properties.
2. Under Advanced tab, set the Socket Timeout (sec) to a larger value.
于 2015-03-27T06:53:45.880 回答
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

于 2016-01-08T11:07:27.267 回答
5

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

于 2021-02-10T13:28:46.993 回答
4

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

因为您应该将 mysql 配置文件中的“interactive_timeout”和“wait_timeout”属性设置为您需要的值。

于 2014-07-24T09:59:29.290 回答
4

在 Edit->Preferences->SQL editor->MySQL session 中更改“读取超时”时间

于 2016-04-21T09:25:34.317 回答
2

加载 .csv 文件时我遇到了同样的问题。将文件转换为 .sql。

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

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

希望这会有所帮助。

于 2016-09-08T06:19:47.260 回答
2

转到工作台编辑 → 首选项 → SQL 编辑器 → DBMS 连接读取超时:最多 3000。不再发生错误。

于 2018-09-01T02:50:16.443 回答
2

如果此处的所有其他解决方案都失败 - 检查您的系统日志(/var/log/syslog 或类似的)以查看您的服务器在查询期间是否内存不足。

在没有配置交换文件的情况下将 innodb_buffer_pool_size 设置得太接近物理内存时出现此问题。MySQL 建议数据库特定服务器设置 innodb_buffer_pool_size 最大为物理内存的 80% 左右,我将其设置为 90% 左右,内核正在杀死 mysql 进程。将 innodb_buffer_pool_size 移回 80% 左右,这解决了问题。

于 2017-01-05T18:46:38.710 回答
1

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

于 2017-02-26T15:35:04.390 回答
1

我遇到了同样的问题。我相信当你有更大表的外键时会发生这种情况(这需要时间)。

我尝试在没有外键声明的情况下再次运行 create table 语句,发现它有效。

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

希望这会对某人有所帮助。

于 2016-12-23T07:22:30.237 回答
1

去:

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

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

于 2017-05-05T13:23:47.980 回答
0

首先检查索引是否到位。

SELECT *
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = '<schema>'
于 2017-09-22T03:58:20.037 回答
0

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

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

于 2018-06-25T08:21:39.950 回答
0

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

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

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

我的默认 SSH 超时设置非常低,导致我的一些(但显然不是全部)超时问题。之后,别忘了重启 MySQL Workbench!

最后,可能值得联系您的数据库管理员并要求他们通过 my.conf + mysql restart 增加 mysql 本身的 wait_timeout 和 interactive_timeout 属性,或者如果无法重新启动 mysql 则进行全局设置。

希望这可以帮助!

于 2019-05-06T17:36:16.490 回答
0

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

于 2017-05-11T15:38:48.740 回答
0

由于升级 Mysql 后出现问题,我收到此错误消息。在我尝试进行任何查询后立即出现错误

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

在我的情况下,将 Mysql 所有者重新分配给 Mysql 系统文件夹对我有用

chown -R mysql:mysql /var/lib/mysql
于 2021-01-23T19:29:54.200 回答
0

我在运行存储过程时遇到了这个问题——它在数据库中的表中创建了很多行。我可以在时间超过 30 秒边界后立即看到错误。

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

我猜这是我在 Workbench 中找不到的一些客户端连接。也许这也会对其他人有所帮助?

于 2017-12-19T21:19:35.317 回答
0

我遇到了同样的问题 - 但对我来说,解决方案是权限过于严格的数据库用户。我不得不让这个Execute能力摆在mysql桌面上。在允许之后,我没有断开连接了

于 2017-08-31T17:35:43.897 回答
0

首先建立连接 mysql --host=host.com --port=3306 -u username -p ,然后选择您的数据库use dbname ,然后选择源哑source C:\dumpfile.sql。完成后\q

于 2021-10-29T05:32:48.833 回答
0

要遵循并确保三件事:

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

答案:

  1. 始终尝试删除定义器,因为 MySQL 创建了自己的定义器,并且如果涉及更新的多个表尝试进行单个查询,因为有时多个查询显示连接丢失
  2. 如果其条件不涉及 SET 值,则始终在顶部设置值,但在 DELETE 之后。
  3. 如果这两个操作都在不同的表上执行,请先使用删除然后更新
于 2019-09-22T16:10:49.680 回答
0

我的观察——

当您一起运行 MySQL Workbench 和终端并在终端中运行时-

SET AUTOCOMMIT = 0;

或者

START TRANSACTION;

那么你通常会遇到这种问题。

甚至在之后——

SET AUTOCOMMIT = 1;

或者

COMMIT;

问题仍然存在。

您需要从终端和 MYSQL 工作台注销,然后再次登录,否则重新启动。

于 2021-11-26T07:13:23.350 回答
-1

检查一下

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

希望这可以帮助

于 2016-07-21T04:30:16.290 回答
-1

这通常意味着您“与 MySQL 服务器的当前版本不兼容”,请参阅 mysql_upgrade。我遇到了同样的问题,只需要运行:

mysql_upgrade --password 文档指出,“每次升级 MySQL 时都应该执行 mysql_upgrade”。

于 2016-08-03T10:34:55.490 回答