查询的时候失去连接 MySQL,关于sql:错误代码:2013。查询期间与MySQL服务器的连接断开...

我收到错误代码:2013。当我尝试使用MySQL Workbench向表中添加索引时,在查询错误期间失去了与MySQL服务器的连接。

我还注意到,只要我运行长时间查询,它就会出现。

是否有增加超时值的方法?

新版本的MySQL WorkBench具有更改特定超时的选项。

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

将值更改为6000。

也没有检查限制行,因为每次我要搜索整个数据集时都会设置限制,这很麻烦。

是否可以在99,999秒内增加此限制? DBMS connection read time out字段最多只能接受5个数字,并且将该字段设置为0等效于默认参数(600秒)。 (Windows 7 64位旗舰版,MySQL Workbench 5.2.47 CE)

在stackoverflow.com/q/16877574/395857之后,此问题现在已解决(bugs.mysql.com/bug.php?id=69395)

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

我尝试了此操作,当我右键单击一个表并单击"选择行"时,它现在显示错误0且没有任何消息。我想我不明白为什么在登录数据库后执行搜索秒时,为什么600秒的时间不足以读取超时。

重新启动后,即使读取超时设置为6000,它也会再次显示错误2013,因此这似乎不是解决方案。

请记住先重新启动Workbench,然后先关闭所有打开的查询窗口!

在最新版本中,超时设置位于MySQLWorkBench / Preference / Others

为我工作。谢谢。

这对我不起作用,但是只有通过ssh连接时才有问题。

设定高价值对我没有用。因此,我要做的是...而不是任意设置一个高值,而是将其设置为零,然后跳过读取超时。如果您采用这种方式,请记住再次输入一个值,以防万一。

对于使用Querious的任何人,此解决方案都能帮助我找到它:首选项->高级->读取超时。另外,我必须重启可疑应用程序才能开始更改

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

供参考,请在此处和此处。

这是正确的,但是大多数起伏的答案实际上帮助了我

如何在命令行中提供此参数?当我尝试连接到数据库时:mysql -u root -p --net_read_timeout = 60还是当我尝试启动服务时? sudo服务mysql启动?在两个地方都给出错误:未知变量net_read_timeout

@VikasGoel这是服务器端参数。即mysqld。

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

[mysqld]

max_allowed_packet=16M

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

虽然引用的线程与MySQL错误2006有关,但将max_allowed_packet从1M设置为16M确实解决了2013错误,该错误在运行长查询时显示给我。

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

这正是我的问题。我正在从文件导入数据库备份,而MySQL Workbench报告此2013错误,然后报告"操作失败,退出代码1"。事实证明,备份中的大blob列超过了MySQL的默认max_allowed_pa??cket大小4M。增加此固定它。 (MySQL 5.6和Workbench 6.2.3)。谢谢!

这也是我的解决方法。虽然对于Windows计算机,我将其设置为256M。

原来是16M,多次导入文件时出错,更改为32M,然后开始工作。

将以下内容添加到/ 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

您确定文件名etcmysqlcnf是正确的吗?不应该是etcmy.cnf吗?

SET @@local.net_read_timeout=360;

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

SET @@global.net_read_timeout=360;

此错误信息的三个可能原因

通常,它表明网络连接有问题,如果此错误频繁发生,则应检查网络状况

有时,当作为一个或多个查询的一部分发送数百万行时,就会发生"查询中"形式。

很少会在客户端尝试与服务器建立初始连接时发生

For more detail read >>

原因2:

SET GLOBAL interactive_timeout=60;

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

原因3:

SET GLOBAL connect_timeout=60;

谢谢!

但是随着mysqldb更新,配置已变为:

max_allowed_packet

net_write_timeout

net_read_timeout

MySQL文档

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

这确实对我有帮助。 my.cnf中的Interactive_timeout设置为100,那太短了。当我将其更改为3600 s(或任何对您来说足够大的值)后,问题解决了。

只需执行MySQL升级即可重建innoDB引擎,并重建许多MySQL正常运行所需的表,例如performance_schema,information_schema等。

从您的shell发出以下命令:

sudo mysql_upgrade -u root -p

该错误直到MySQL Workbench 6.1.4(仅在一段时间后)才出现,并且在6.1.6上也发生(尽管仅在使用几次之后),所以我不确定如何重建多个服务器是针对具有以下问题的解决方案最近才在一个GUI上展示自己。

这解决了我的问题。我刚刚使用Ansible在现有数据库上建立了数据库,事情变得一团糟。运行此命令将一切恢复到正常工作状态。

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

我知道它的老但在Mac上

1. Control-click your connection and choose Connection Properties.

2. Under Advanced tab, set the Socket Timeout (sec) to a larger value.

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

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

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

我的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

加载.csv文件时出现相同的问题。

将文件转换为.sql。

使用以下命令,我设法解决此问题。

mysql -u -p -D < file.sql

希望这会有所帮助。

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

在将innodb_buffer_pool_size设置为与物理内存过于接近而未配置交换文件的情况下,出现了此问题。 MySQL建议数据库特定的服务器将innodb_buffer_pool_size设置为最大物理内存的大约80%,而我将其设置为大约90%,因为内核正在杀死mysql进程。将innodb_buffer_pool_size降低到大约80%,这解决了该问题。

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

该错误不再发生。

我遇到了同样的问题。我相信,如果您有指向较大表的外键(这需要时间),就会发生这种情况。

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

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

希望这会帮助某人。

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

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

我遇到了同样的问题-但对我来说,解决方案是拥有过于严格权限的DB用户。

我必须允许mysql表具有Execute功能。允许我不再断开连接之后

首先检查索引是否到位。

SELECT *

FROM INFORMATION_SCHEMA.STATISTICS

WHERE TABLE_SCHEMA = ''

去:

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

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

请注意以下三点:

多个查询是否显示失去连接?

如何在MySQL中使用设置查询?

如何同时删除+更新查询?

回答:

始终尝试删除定义器,因为MySQL创建了自己的定义器,并且如果涉及多个表的更新尝试进行单个查询,因为有时多个查询会显示连接丢失

始终将SET值放在顶部,但如果其条件不涉及SET值,则在DELETE之后。

如果在不同的表上都执行了两项操作,请先删除然后再进行更新

如果您使用的是SQL Work Bench,则可以尝试使用索引,方法是在表中添加索引,添加索引,然后单击表上的扳手(扳手)符号,它将打开表的设置,如下所示,在索引视图上单击,键入索引名称并将类型设置为index,在索引列中,选择表中的主列。

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

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

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

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

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

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

希望这可以帮助!

我在运行存储过程时遇到了这个问题,该过程在数据库的表中创建了很多行。

时间跨过30秒边界后,我可以立即看到错误。

我尝试了其他答案中的所有建议。我确信其中某些功能会有所帮助,但是-对我来说真正起作用的是从Workbench切换到SequelPro。

我猜这是我在Workbench中找不到的某些客户端连接。

也许这也会对其他人有所帮助?

这通常意味着您"与当前版本的MySQL Server不兼容",请参见mysql_upgrade。我遇到了同样的问题,只好运行:

mysql_upgrade-密码

该文档指出,"每次升级MySQL都应执行mysql_upgrade"。

检查一下

OOM on /var/log/messages ,

modify innodb_buffer_pool_size value ; when load data , use 50% of os mem ;

希望这可以帮助

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值