我试图通过phpMyAdmin导入一个大的sql文件…但它一直显示错误
“MySql服务器已经消失”
怎么办呢?
我试图通过phpMyAdmin导入一个大的sql文件…但它一直显示错误
“MySql服务器已经消失”
怎么办呢?
当前回答
如果需要很长时间才能失败,则扩大wait_timeout变量。
如果它马上失败,放大max_allowed_packet变量;如果它仍然不工作,确保命令是有效的SQL。我的书有未转义的引号,把一切都搞砸了。
此外,如果可行,可以考虑将单个SQL命令的插入数量限制为1000。您可以创建一个脚本,通过重新引入INSERT…每n个插入部分。
其他回答
如果你使用默认值运行,那么你有很多空间来优化你的mysql配置。
我建议的第一步是将max_allowed_packet增加到128M。
然后下载MySQL Tuning Primer脚本并运行它。它将为您的配置提供几个方面的建议,以获得更好的性能。
另外,还要在MySQL和PHP中调整超时值。
你要导入的文件有多大(文件大小),你能使用mysql命令行客户端而不是PHPMyAdmin导入文件吗?
当我导入16gb的SQL文件时,我有这个错误和其他相关的错误。对我来说,编辑my.ini并在[mysqld]部分中设置以下内容(基于几个不同的帖子):
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 server has gone away'错误。
为了避免这种情况,重新创建mysqldump,但是使用——hex-blob标记:
http://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_hex-blob
这将写出数据文件与十六进制值,而不是二进制之间的其他文本。
PhpMyAdmin也有选项“转储十六进制符号的二进制列(例如,“abc”变成0x616263)”,这工作得很好。
请注意,存在一个长期存在的错误(截至2015年12月),这意味着GEOM列不能转换: 备份一个表几何列使用mysqldump? 所以使用像PhpMyAdmin这样的程序似乎是唯一的解决方案(上面提到的选项可以正确地转换GEOM列)。
我有类似的错误,今天复制数据库(MySQL服务器已经离开…),但当我试图重新启动MySQL。服务器重启出错
ERROR! The server quit without updating PID ...
我是这样解决的: 我打开Applications/Utilities/并运行Activity Monitor
quit mysqld
然后就能解决误差问题了
mysql.server restart