导入大型sql文件时MySQL服务器已经消失

我试图通过phpMyAdmin导入一个大的SQL文件…但它一直显示错误

“MySql服务器已经消失”

该怎么办?

如此处所述:

MySQL服务器的两个最常见的原因(和修复)已经消失(错误2006)是:

服务器超时并closures连接。 怎么修:

  1. 检查你的mysqld的my.cnfconfiguration文件中的wait_timeoutvariables是否足够大。 在Debian上: sudo nano /etc/mysql/my.cnf ,设置wait_timeout = 600秒(当错误2006消失时你可以调整/减less这个值),然后sudo /etc/init.d/mysql restart 。 我没有检查,但wait_timeout的默认值可能是28800秒(8小时)左右。

  2. 服务器丢弃了一个不正确或太大的数据包 如果mysqld得到一个太大或不正确的数据包,就认为客户端出了问题,并closures连接。 您可以通过增加my.cnf文件中的max_allowed_pa​​cket的值来增加最大数据包大小限制。 在Debian上: sudo nano /etc/mysql/my.cnf ,设置max_allowed_packet = 64M (当错误2006消失时你可以调整/减less这个值),然后sudo /etc/init.d/mysql restart

对我来说,这个解决scheme并没有解决,所以我执行了

 SET GLOBAL max_allowed_packet=1073741824; 

在我的SQL客户端。

如果不能在运行MYSQL服务的时候改变这个,你应该停止服务并更改“my.ini”文件中的variables。

例如:

 max_allowed_packet=20M 

如果你使用默认值运行,那么你有很多空间来优化你的mysqlconfiguration。

我build议的第一步是将max_allowed_pa​​cket增加到128M。

然后下载MySQL Tuning Primer脚本并运行它。 它将为您的configuration的几个方面提供build议,以获得更好的性能。

同时考虑在MySQL和PHP中调整你的超时值。

您正在导入的文件有多大(文件大小),并且您能够使用mysql命令行客户端而不是PHPMyAdmin导入文件?

如果您在OS X上使用MAMP,则需要更改MySQL模板中的max_allowed_packet值。

  1. 你可以在文件>编辑模板> MySQL my.cnffind它

  2. 然后,只要searchmax_allowed_packet ,更改值并保存。

希望这有助于某人。

如果你正在使用XAMPP,那么你可以修复MySQL服务器已经消失的问题,以下更改..

打开my.ini文件my.ini位置是(D:\ xampp \ mysql \ bin \ my.ini)

更改以下variables值

 max_allowed_packet = 64M innodb_lock_wait_timeout = 500 

这可能发生的另一个原因是内存不足。 检查/ var / log / messages并确保你的my.cnf没有被设置为导致mysqld分配比你的机器更多的内存。

你的mysqld进程实际上可以被内核杀死,然后在没有意识到的情况下通过“safe_mysqld”进程重新启动。

使用top并在运行时观察内存分配,看看你的空间是多less。

在更改my.cnf之前做一个备份。

我有这个错误和其他相关的,当我导入16 GB的SQL文件。 对我来说,编辑my.ini并在[mysqld]部分设置以下(基于几个不同的post):

 max_allowed_packet = 110M innodb_buffer_pool_size=511M innodb_log_file_size=500M innodb_log_buffer_size = 800M net_read_timeout = 600 net_write_timeout = 600 

如果您在Windows下运行,请转至控制面板,服务并查看MySQL的详细信息,您将看到my.ini的位置。 然后,编辑并保存my.ini后,重新启动mysql服务(或重新启动计算机)。

如果你正在使用HeidiSQL,你也可以使用这些设置一些或全部。

我用这个简短的/etc/mysql/my.cnf文件解决了我的问题:

 [mysqld] wait_timeout = 600 max_allowed_packet = 100M 

如果您的数据包含BLOB数据:

请注意,从命令行导入数据似乎阻塞了BLOB数据,导致“MySQL服务器已经消失”错误。

为了避免这种情况,使用--hex-blob标志重新创buildmysqldump:

http://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_hex-blob

它将用hex值而不是二进制文件写出数据文件。

PhpMyAdmin也有选项“以hex表示法转储二进制列(例如,”abc“变为0x616263)”这很好地工作。

请注意,存在一个长期存在的错误(截至2015年12月),这意味着GEOM列未被转换: 使用mysqldump备份带有GEOMETRY列的表? 所以使用像PhpMyAdmin这样的程序似乎是唯一的解决方法(上面提到的选项可以正确转换GEOM列)。

我更新了“max_allowed_pa​​cket”为1024M,但它仍然无法正常工作。 原来我的部署脚本正在运行:

 mysql --max_allowed_packet=512M --database=mydb -u root < .\db\db.sql 

如果你用这种方式进行赋值,一定要从命令行明确指定一个更大的数字。

如果失败需要很长时间,则放大wait_timeoutvariables。

如果它立即失败,请放大max_allowed_packetvariables; 它仍然不起作用,请确保该命令是有效的SQL。 我的报价已经扭转了一切。

另外,如果可行,考虑将单个SQL命令的插入数量限制为1000.您可以创build一个脚本,通过每n次插入一次,重新引入INSERT …部分,从而创build多个语句。

我得到了一个类似的错误..解决这个只是打开my.ini文件..在线没有36改变最大允许的数据包大小的值即。 max_allowed_pa​​cket = 20M

我今天有类似的错误,当复制数据库(MySQL服务器已经消失…),但是当我试图重新启动mysql.server重新启动时,我得到了错误

 ERROR! The server quit without updating PID ... 

这是我解决它的方法:我打开Applications / Utilities /并运行Activity Monitor

  quit mysqld 

然后才能解决错误的问题

 mysql.server restart 

我正在做一些大型的计算,涉及到MySQL连接,以保持长时间和大量的数据。 我正面临着这个“Mysql走开的问题”。 所以我试图优化查询,但不帮助我,然后我增加了默认设置为较低值的MySQLvariables限制。

wait_timeout max_allowed_pa​​cket

任何适合你的限制都应该是Any Number * 1024(Bytes)。 您可以使用' mysql -u username – p '命令login到terminal,并可以检查并更改这些variables限制。