当我试图通过 MySQL Workbench 给一张表添加索引的时候,我得到Error Code: 2013. Lost connection to MySQL server during query错误。 我还注意到,每当我运行执行时间比较长的查询时,错误就会出现。< / p >
所以,我想知道是否有增加超时值的方法?
使用命令行选项net_read_timeout / wait_timeout和一个合适的值(以秒为单位)启动DB服务器——例如:--net_read_timeout=100。
net_read_timeout
wait_timeout
--net_read_timeout=100
参考在这里和在这里。
你应该在mysql配置文件中设置'interactive_timeout'和'wait_timeout'属性为你需要的值。
新版本的MySQL WorkBench有一个选项可以更改特定的超时时间。
对我来说,它是在编辑→首选项→SQL编辑器→DBMS连接读取超时时间(秒):600
将值更改为6000。
此外,不勾选限制行,因为每次我想搜索整个数据集时都要设置一个限制,这会让人感到厌烦。
只需执行一个MySQL升级,将重新构建innoDB引擎,以及重建MySQL正常运行所需的许多表,如performance_schema, information_schema等。
performance_schema
information_schema
从你的shell中发出下面的命令:
sudo mysql_upgrade -u root -p
如果您的查询有blob数据,此问题可以通过应用my.ini更改如本答复所提议来修复:
my.ini
[mysqld] max_allowed_packet=16M
默认情况下,这将是1M(允许的最大值是1024M)。如果提供的值不是1024K的倍数,它将自动舍入到1024K的最接近倍数。
虽然引用的线程是关于MySQL错误2006,设置max_allowed_packet从1M到16M 做了修复2013年的错误,为我运行一个长查询时出现。
max_allowed_packet
对于WAMP用户:你会在[wampmysqld]部分中找到这个标志。
[wampmysqld]
请尝试取消在编辑→首选项→SQL查询中的限制行
因为你应该在mysql配置文件中设置'interactive_timeout'和'wait_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 @@local.net_read_timeout=360;
警告:当您在远程连接中应用它时,以下将不起作用:
SET @@global.net_read_timeout=360;
编辑: 360是秒数
如果您在恢复一个大转储文件期间遇到这个问题,并且可以排除与网络有关的问题(例如在本地主机上执行),那么我的解决方案可能会有帮助。
show variables like "net_buffer_length";
--skip-extended-insert
--net-buffer_length NR_OF_BYTES
mysqldump --skip-comments --set-charset --default-character-set=utf8 --single-transaction --net-buffer_length 4096 DBX > dumpfile
在“编辑->首选项->SQL编辑器->MySQL会话”中修改“读取超时”时间
检查有关
OOM on /var/log/messages , modify innodb_buffer_pool_size value ; when load data , use 50% of os mem ;
希望这能有所帮助
这通常意味着你有“与当前版本的MySQL服务器不兼容”,参见mysql_upgrade。我也遇到了同样的问题,我不得不跑掉:
使用下面的命令,我设法解决这个问题。
mysql -u <user> -p -D <DB name> < file.sql
希望这能有所帮助。
此错误消息有三个可能的原因
更多详细信息阅读> >
原因2:
SET GLOBAL interactive_timeout=60;
从默认的30秒到60秒或更长时间
原因3:
SET GLOBAL connect_timeout=60;
我也遇到过同样的问题。我相信当您有较大表的外键时(这需要时间)就会发生这种情况。
我尝试运行create table语句再次没有外键声明,并发现它工作。
然后在创建表之后,我使用ALTER table查询添加外键约束。
希望这能帮助到一些人。
如果这里所有其他解决方案都失败了,请检查您的syslog (/var/log/syslog或类似),看看您的服务器在查询期间是否内存不足。
当innodb_buffer_pool_size设置得太接近物理内存而没有配置交换文件时出现此问题。MySQL建议将innodb_buffer_pool_size设置为物理内存的80%左右,我把它设置为90%左右,内核正在杀死mysql进程。将innodb_buffer_pool_size移回80%左右,解决了这个问题。
这发生在我身上,因为我的innodb_buffer_pool_size被设置为大于服务器上可用的RAM大小。事情因此被中断,然后它发出这个错误。修复方法是用正确的innodb_buffer_pool_size设置更新my.cnf。
至:
编辑->首选项-> SQL编辑器
在“MySQL Session”组中可以看到三个字段,现在可以在其中设置新的连接间隔(以秒为单位)。
原来我们的防火墙规则阻止了我连接MYSQL。在解除防火墙策略以允许连接后,我能够成功地导入架构。
mysql
Execute
首先检查索引是否到位。
SELECT * FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = '<schema>'
我尝试了其他答案中的所有建议。我确信其中有一些帮助,然而,真正让我有用的是从Workbench切换到SequelPro。
如果您正在使用SQL工作台,您可以尝试使用索引,通过添加索引到您的表,要添加索引,单击扳手(扳手)符号在表上,它应该打开表的设置,下面,单击索引视图,键入索引名称并设置类型为索引,在索引列中,选择表中的主列。
对其他表上的其他主键执行相同的步骤。
进入工作台编辑→首选项→SQL编辑器→DBMS连接读取超时时间:高达3000。
对于那些使用SSH连接到MySQL数据库的人来说,这里似乎缺少一个答案。你需要检查两个地方,而不是其他答案建议的1:
工作台编辑→首选项→SQL编辑器→DBMS
工作台编辑→首选项→SSH→超时
我的默认SSH超时设置得很低,导致了一些(但显然不是全部)超时问题。之后,不要忘记重新启动MySQL工作台!
最后,你可以联系你的数据库管理员,让他们增加wait_timeout &Interactive_timeout属性在mysql本身通过my.conf + mysql重启或做一个全局设置,如果重启mysql不是一个选项。
希望这能有所帮助!
要遵循并确保三件事:
答案:
在我的例子中,将连接超时间隔设置为6000或更高的时间没有起作用。
我只是做了工作台允许我做的事情。
查询从DBMS返回数据所需的最大时间。设置0跳过读超时。
它工作😄
我有这个错误消息,由于一个问题后升级Mysql。错误出现立即后,我试图做任何查询
检查mysql错误日志文件在路径/var/log/mysql (linux)
/var/log/mysql
在我的情况下,重新分配Mysql的所有者Mysql系统文件夹为我工作
chown -R mysql:mysql /var/lib/mysql
mysql --host=host.com --port=3306 -u username -p
use dbname
source C:\dumpfile.sql
\q
我的观察是
当你同时运行MySQL工作台和终端时,在终端中你会做-
SET AUTOCOMMIT = 0;
或
START TRANSACTION;
然后你通常会遇到这类问题。
甚至在那之后
SET AUTOCOMMIT = 1;
COMMIT;
问题依然存在。
您需要同时从终端和MYSQL工作台注销,然后重新登录或重新启动。
根据我所理解的,此错误是由于read timeout和max allowed packet默认为4M引起的。如果你的查询文件超过4Mb,那么你会得到一个错误。这对我很有效
read timeout
max allowed packet
Workbench Edit → Preferences → SQL Editor
"C:\ProgramData\MySQL\MySQL Server 8.0\my.ini"
ProgramData
max_allowed_packet = 16M
win+ R -> services.msc
使用MySql Server 8.0.28社区版,在我的模式中创建了100多个表。MySql服务器不能正常工作,多次崩溃。我发现了问题和解决方案。
我写了“select count(*) from table1..table100”;查询并在.sql文件中运行。
问题1:MySql服务器设置utf8mb4和我的表创建utf8。
解决方案1:必须设置表和列,或者使用utf8mb4重新创建。
问题2:back_log参数需要重新配置。
解决方案2:set back_log=50+(coonectioncount/5)
问题3:wait_timeout参数需要重新配置。
解决方案3:您必须将其设置为180+(您可以尝试较大的值)
这个行动解决了我的问题。
尝试应用LIMIT。
LIMIT
最初,查询是
SELECT * FROM TABLE1;
这是Error Code: 2013. Lost connection to MySQL server during query
Error Code: 2013. Lost connection to MySQL server during query
在应用LIMIT之后
SELECT * FROM TABLE1 LIMIT 10;
它工作。当再次尝试查询w/o LIMIT时,也可以工作。
注意:如果这对你有效,并且你知道为什么它有效,请评论。
合十礼🙏
对我来说,以上都没用。然后我尝试停止mysql服务,并再次启动它,神奇地查询开始运行:D。
$ sudo service mysql stop $ sudo service mysql start