作者:佩政哲维99 | 来源:互联网 | 2023-09-17 09:22
紫衣仙女
一般来说,错误:错误:2006年(CR_SERVER_GONE_ERROR)-MySQL服务器已经消失意味着客户端无法向服务器发送问题.mysql进口在特定情况下,同时通过mysql,这很可能意味着SQL文件中的一些查询太大,无法导入,无法在服务器上执行,因此客户端在第一个发生的错误上失败。所以你有以下几种可能性:添加强制选项(-f)mysql继续并执行其余的查询。如果数据库有一些与缓存相关的大型查询,而这些查询与缓存无关,则这是非常有用的。增加max_allowed_packet和wait_timeout在您的服务器配置中(例如,~/.my.cnf).使用--skip-extended-insert选项来分解大型查询。然后再导入。试着应用--max-allowed-packet可供选择的mysql.共同原因一般来说,这个错误可能意味着几个方面,例如:对服务器的查询不正确或太大,解决办法:增加max_allowed_packet变量.确保变量在下面[mysqld]部分,不是[mysql].不要害怕使用大量的数字进行测试(例如1G).不要忘记重新启动MySQL/MariaDB服务器。通过以下方法对值进行正确设置:mysql -sve "SELECT @@max_allowed_packet" # or:mysql -sve "SHOW VARIABLES LIKE 'max_allowed_packet'"您从客户端的TCP/IP连接中获得了超时。解决办法:增加wait_timeout变量.在关闭到服务器的连接后,尝试运行查询。解决方案:应用程序中的逻辑错误应该得到纠正。主机名查找失败(例如DNS服务器问题),或服务器已启动--skip-networking选择。另一种可能是防火墙阻塞MySQL端口(例如,默认情况下为3306)。正在运行的线程已被终止,因此请重试。在执行查询时,您遇到了服务器死掉的错误。在不同主机上运行的客户端没有连接所需的特权。还有更多,因此在以下网站了解更多:B.5.2.9 MySQL服务器已经消失.调试下面是一些专家级的调试想法:检查日志。sudo tail -f $(mysql -Nse "SELECT @@GLOBAL.log_error")通过mysql, telnet或ping函数(例如:mysql_ping(在PHP中)。使用tcpdump若要嗅探MySQL通信(套接字连接不起作用),例如:sudo tcpdump -i lo0 -s 1500 -nl -w- port mysql | strings在linux上,使用strace..浅谈BSD/Mac的使用dtrace/dtruss,G.sudo dtruss -a -fn mysqld 2>&1见:开始使用DTraceMySQL了解如何调试MySQL服务器或客户端的更多信息,请访问:26.5调试和移植MySQL.作为参考,请将源代码签入sql-common/client.c文件负责抛出CR_SERVER_GONE_ERROR客户端命令出错。MYSQL_TRACE(SEND_COMMAND, mysql, (command, header_length, arg_length, header, arg));
if (net_write_command(net,(uchar) command, header, header_length,
arg, arg_length)){
set_mysql_error(mysql, CR_SERVER_GONE_ERROR, unknown_sqlstate);
goto end;}