当我尝试使用MySQL Workbench向表添加索引时,我收到错误代码:2013。在查询期间丢失了与MySQL服务器的连接错误。 我还注意到每当我运行长查询时它就会出现。
有没有增加超时值?
答案 0 :(得分:373)
新版本的MySQL WorkBench可以选择更改特定的超时。
对我而言,它位于编辑→首选项→SQL编辑器→DBMS连接读取超时(以秒为单位):600
将值更改为6000。
同样取消选中限制行,因为每次我想搜索整个数据集时都会设置限制。
答案 1 :(得分:30)
使用命令行选项net_read_timeout
/ wait_timeout
和合适的值(以秒为单位)启动数据库服务器 - 例如:--net_read_timeout=100
。
答案 2 :(得分:17)
如果您的查询包含blob数据,则可以通过应用my.ini
更改as proposed in this answer修复此问题:
[mysqld]
max_allowed_packet=16M
默认情况下,这将是1M(允许的最大值为1024M)。如果提供的值不是1024K的倍数,它将自动舍入到最接近的1024K的倍数。
虽然引用的线程是关于MySQL错误 2006 ,但将max_allowed_packet
从1M设置为16M 确实修复了2013年出现的错误运行一个长查询。
对于WAMP用户:您会在[wampmysqld]
部分找到该标记。
答案 3 :(得分:14)
将以下内容添加到/ 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
答案 4 :(得分:10)
SET @@local.net_read_timeout=360;
警告:当您在远程连接中应用它时,以下操作无效:
SET @@global.net_read_timeout=360;
答案 5 :(得分:9)
此错误消息可能有三种原因
详细信息 read >>
原因2:
SET GLOBAL interactive_timeout=60;
从默认值30秒到60秒或更长时间
原因3:
SET GLOBAL connect_timeout=60;
答案 6 :(得分:8)
您应该将mysql配置文件中的'interactive_timeout'和'wait_timeout'属性设置为您需要的值。
答案 7 :(得分:8)
答案 8 :(得分:7)
只需执行MySQL升级即可重新构建innoDB引擎,同时重建MySQL正常运行所需的许多表,例如performance_schema
,information_schema
等。
从shell发出以下命令:
sudo mysql_upgrade -u root -p
答案 9 :(得分:4)
我知道它的旧版但是在Mac上
1. Control-click your connection and choose Connection Properties.
2. Under Advanced tab, set the Socket Timeout (sec) to a larger value.
答案 10 :(得分:4)
在Edit-> Preferences-> SQL editor-> MySQL session
中更改“read time out”时间答案 11 :(得分:3)
有时您的 SQL-Server 会陷入死锁,我已经遇到这个问题 100 次了。您可以重新启动计算机/笔记本电脑以重新启动服务器(简单的方法),或者您可以转到任务管理器>服务>您的服务器名称(对我来说,它是 MySQL785 之类的东西)。然后右键单击>重新启动。 再次尝试执行查询。
答案 12 :(得分:3)
请尝试取消选中编辑→首选项→SQL查询
中的限制行因为您应该设置' interactive_timeout'和' wait_timeout' mysql配置文件中的属性为您需要的值。
答案 13 :(得分:3)
如果在恢复大型转储文件期间遇到此问题,并且可以排除与网络有关的问题(例如在localhost上执行),那么我的解决方案可能会有所帮助。
我的mysqldump至少有一个INSERT对于mysql来说太大而无法计算。您可以通过在mysql-cli中键入show variables like "net_buffer_length";
来查看此变量。
你有三种可能性:
--skip-extended-insert
创建转储,每个插入一行使用 - >虽然这些转储更好读,但这不适合大转储> 1GB,因为它往往很慢--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
答案 14 :(得分:2)
加载.csv文件时出现同样的问题。 将文件转换为.sql。
使用以下命令我设法解决此问题。
mysql -u <user> -p -D <DB name> < file.sql
希望这会有所帮助。
答案 15 :(得分:2)
如果这里的所有其他解决方案都失败了 - 请检查您的syslog(/ var / log / syslog或类似的),以查看您的服务器在查询期间是否内存不足。
如果在没有配置交换文件的情况下将innodb_buffer_pool_size设置得太接近物理内存,则会出现此问题。 MySQL recommends for a database specific server setting innodb_buffer_pool_size at a max of around 80% of physical memory,我把它设置为90%左右,内核正在杀死mysql进程。将innodb_buffer_pool_size移回约80%并解决了问题。
答案 16 :(得分:1)
我遇到了同样的问题。我相信当你有更大的表的外键(这需要时间)时会发生这种情况。
我尝试在没有外键声明的情况下再次运行create table语句,发现它有效。
然后在创建表之后,我使用ALTER TABLE查询添加了外键约束。
希望这会对某人有所帮助。
答案 17 :(得分:1)
这发生在我身上,因为我的innodb_buffer_pool_size被设置为大于服务器上可用的RAM大小。事情因此而中断,并发出此错误。解决方法是使用innodb_buffer_pool_size的正确设置更新my.cnf。
答案 18 :(得分:0)
我遇到了同样的问题 - 但对我来说,解决方案是一个权限过于严格的数据库用户。
我必须在Execute
表上允许mysql
能力。在允许之后我不再有掉线了
答案 19 :(得分:0)
由于升级 Mysql 后出现问题,我收到此错误消息。在我尝试执行任何查询后立即出现错误
检查路径 /var/log/mysql
(linux) 中的 mysql 错误日志文件
在我的情况下,将 Mysql 所有者重新分配给 Mysql 系统文件夹对我有用
chown -R mysql:mysql /var/lib/mysql
答案 20 :(得分:0)
对于我来说,将连接超时间隔设置为6000或更高的值是行不通的。
我只是按照工作台的说明去做。
查询从DBMS返回数据所需的最长时间。设置为0以跳过读取超时。
在Mac上 首选项-> SQL编辑器->转到MySQL会话->将连接读取超时间隔设置为0。
它有效?
答案 21 :(得分:0)
要注意的三件事:
答案:
答案 22 :(得分:0)
对于那些使用SSH连接到他们的MySQL数据库的人来说,似乎缺少答案。您需要检查两个地方而不是其他答案建议的1:
工作台编辑→首选项→SQL编辑器→DBMS
Workbench编辑→首选项→SSH→超时
我的默认SSH超时设置得很低,并导致了一些(但不是全部)超时问题。之后,别忘了重启MySQL Workbench!
最后,可能值得联系您的数据库管理员,并要求他们通过my.conf + mysql restart增加mysql本身的wait_timeout和Interactive_timeout属性,或者如果不选择重新启动mysql,则进行全局设置。
希望这会有所帮助!
答案 23 :(得分:0)
转到Workbench编辑→首选项→SQL编辑器→DBMS连接读取超时:最多3000。 该错误不再发生。
答案 24 :(得分:0)
如果您使用的是SQL Work Bench,则可以尝试使用索引,方法是在表中添加索引,然后添加索引,然后单击表上的扳手(扳手)符号,它应该会打开在下面的表中,单击索引视图,键入索引名称并将类型设置为index,在索引列中,选择表中的主列。
对其他表上的其他主键执行相同的步骤。
答案 25 :(得分:0)
我在运行存储过程时遇到了这个问题 - 这会在数据库中的表中创建大量行。 在超过30秒的界限后,我可以看到错误。
我在其他答案中尝试了所有建议。我确信它有一些帮助,但是真正让它起作用的是从Workbench切换到SequelPro。
我猜这是我在Workbench中找不到的客户端连接。 也许这会对其他人有帮助吗?
答案 26 :(得分:0)
首先检查索引是否到位。
SELECT *
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = '<schema>'
答案 27 :(得分:0)
原来我们的防火墙规则阻止了我与MYSQL的连接。解除防火墙策略以允许连接后,我能够成功导入架构。
答案 28 :(得分:0)
转到:
编辑 - &gt;偏好 - &gt; SQL编辑器
在那里,您可以在“MySQL Session”组中看到三个字段,您现在可以在其中设置新的连接间隔(以秒为单位)。
答案 29 :(得分:-1)
检查
OOM on /var/log/messages ,
modify innodb_buffer_pool_size value ; when load data , use 50% of os mem ;
希望这有帮助
答案 30 :(得分:-1)
这通常意味着您与当前版本的MySQL Server&#34;不兼容,请参阅mysql_upgrade。我遇到了同样的问题,只需要运行:
mysql_upgrade --password 文档指出,每次升级MySQL&#34;时都应该执行mysql_upgrade。