错误代码:2013。查询期间与MySQL服务器的连接中断
我得到了错误代码:2013。当我试图使用MySQL Workbench向表中添加索引时,在查询过程中丢失了与MySQL服务器的连接。 我还注意到,每当我运行长查询时,它都会出现错误代码:2013。查询期间与MySQL服务器的连接中断,mysql,sql,database,mysql-workbench,Mysql,Sql,Database,Mysql Workbench,我得到了错误代码:2013。当我试图使用MySQL Workbench向表中添加索引时,在查询过程中丢失了与MySQL服务器的连接。 我还注意到,每当我运行长查询时,它都会出现 是否需要增加超时值?使用comandline选项net\u read\u timeout/wait\u timeout和合适的值(以秒为单位)启动DB服务器-例如:--net\u read\u timeout=100 有关参考信息,请参阅和。您应该将mysql配置文件中的“交互式超时”和“等待超时”属性设置为所需的值。新
是否需要增加超时值?使用comandline选项
net\u read\u timeout
/wait\u timeout
和合适的值(以秒为单位)启动DB服务器-例如:--net\u read\u timeout=100
有关参考信息,请参阅和。您应该将mysql配置文件中的“交互式超时”和“等待超时”属性设置为所需的值。新版本的mysql WorkBench有一个更改特定超时的选项 对我来说,它正在编辑中→ 偏好→ SQL编辑器→ DBMS连接读取超时(秒):600 将值更改为6000
还未选中限制行,因为每次我要搜索整个数据集时都要设置限制,这会让人感到厌烦 只需执行MySQL升级,该升级将重建innoDB引擎,同时重建MySQL正常运行所需的许多表,如
performance\u schema
,information\u schema
,等等
从shell发出以下命令:
sudo mysql_upgrade -u root -p
如果查询包含blob数据,则可以通过应用
my.ini
更改来解决此问题:
默认情况下,该值为1M(允许的最大值为1024M)。如果提供的值不是1024K的倍数,它将自动四舍五入到最接近的1024K倍数
虽然引用的线程是关于MySQL错误2006的,但将max\u allowed\u packet
从1M设置为16M确实修复了2013年运行长查询时出现的错误
对于WAMP用户:您将在
[wampmysqld]
部分找到该标志。请尝试取消选中编辑中的限制行→ 偏好→SQL查询
因为您应该将mysql配置文件中的“interactive\u timeout”和“wait\u 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 @@global.net_read_timeout=360;
如果您在恢复大转储文件时遇到此问题,并且可以排除与网络有关的问题(例如,在本地主机上执行),那么我的解决方案可能会有所帮助 我的mysqldump至少有一个INSERT太大,mysql无法计算。您可以通过键入
show变量如“net\u buffer\u length”来查看此变量代码>在mysql cli中。
你有三种可能:
- 增加mysql内部的净缓冲区长度->这需要重新启动服务器
- 使用
--跳过扩展插入创建转储,每个插入使用一行->尽管这些转储更易于读取,但这不适合大于1GB的大转储,因为它往往非常慢
- 使用扩展插入创建转储(这是默认设置),但限制净缓冲区长度,例如使用
--net-buffer长度NR\u字节数
,其中NR\u字节数小于服务器的净缓冲区长度->我认为这是最好的解决方案,尽管速度较慢,不需要重新启动服务器
我使用了以下mysqldump命令:
mysqldump--跳过注释--设置字符集--默认字符集=utf8--单个事务--净缓冲区长度4096 DBX>转储文件
在编辑->首选项->SQL编辑器->MySQL会话中更改“读取超时”时间检查
OOM on /var/log/messages ,
modify innodb_buffer_pool_size value ; when load data , use 50% of os mem ;
希望这对您有所帮助这通常意味着您“与当前版本的MySQL服务器不兼容”,请参阅MySQL\u升级。我也遇到了同样的问题,我不得不:
mysql\u升级——密码
文档中说,“每次升级mysql时都应该执行mysql\u升级”。我在加载.csv文件时遇到了同样的问题。
已将文件转换为.sql
我使用下面的命令设法解决这个问题
mysql -u <user> -p -D <DB name> < file.sql
mysql-u-p-D
希望这会有所帮助。此错误消息可能有三个原因
通常,这表示网络连接出现问题,如果此错误频繁发生,则应检查网络状况
有时,当数百万行作为一个或多个查询的一部分发送时,会出现“查询期间”表单
更为罕见的是,当客户端尝试与服务器进行初始连接时,会发生这种情况
更多细节
原因2:
SET GLOBAL interactive_timeout=60;
从默认值30秒到60秒或更长
原因3:
SET GLOBAL connect_timeout=60;
我也面临同样的问题。我相信,当您拥有较大表的外键时,就会发生这种情况(这需要时间)
我尝试在没有外键声明的情况下再次运行CREATETABLE语句,发现它可以工作
然后在创建表之后,我使用ALTERTABLE查询添加了外键约束
希望这会对其他人有所帮助。如果这里的所有其他解决方案都失败,请检查您的系统日志(/var/log/syslog或类似文件),查看您的服务器在查询过程中是否内存不足
当innodb_buffer_pool_大小设置得太接近物理内存而未配置交换文件时出现此问题,我将其设置为90%左右,内核正在终止mysql进程。将innodb_buffer_pool_大小降低到80%左右,解决了这个问题。这发生在我身上,因为我的innodb_buffer_pool_大小设置为大于服务器上可用的RAM大小。由于这个原因,事情被中断了,它发出了这个错误。修复方法是使用innodb_buffer_pool_size的正确设置更新my.cnf。转到:
编辑->首选项->SQL编辑器
在这里,您可以看到“MySQL会话”组中的三个字段,您现在可以在其中设置新的连接间隔(以秒为单位)。
SET GLOBAL interactive_timeout=60;
SET GLOBAL connect_timeout=60;
SELECT *
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = '<schema>'
chown -R mysql:mysql /var/lib/mysql