我试图通过phpMyAdmin导入一个大的sql文件…但它一直显示错误
“MySql服务器已经消失”
怎么办呢?
我试图通过phpMyAdmin导入一个大的sql文件…但它一直显示错误
“MySql服务器已经消失”
怎么办呢?
当前回答
如果您的数据包括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列)。
其他回答
我得到一个类似的错误。要解决这个问题,只需打开my.ini文件,在第36行更改最大允许数据包大小的值。max_allowed_packet = 20M
我用这个简短的/etc/mysql/my.cnf文件解决了我的问题:
[mysqld]
wait_timeout = 600
max_allowed_packet = 100M
我也有同样的问题
$image_base64 = base64_encode(file_get_contents($_FILES['file']['tmp_name']) );
$image = 'data:image/jpeg;base64,'.$image_base64;
$query = "insert into images(image) values('".$image."')";
mysqli_query($con,$query);
在phpmyadmin的\xampp\mysql\bin\my.ini文件中,我们只得到
[mysqldump]
max_allowed_packet=110M
这只是mysqldump -u root -p dbname。我通过替换上面的代码来解决我的问题
max_allowed_packet=110M
[mysqldump]
max_allowed_packet=110M
如果你使用默认值运行,那么你有很多空间来优化你的mysql配置。
我建议的第一步是将max_allowed_packet增加到128M。
然后下载MySQL Tuning Primer脚本并运行它。它将为您的配置提供几个方面的建议,以获得更好的性能。
另外,还要在MySQL和PHP中调整超时值。
你要导入的文件有多大(文件大小),你能使用mysql命令行客户端而不是PHPMyAdmin导入文件吗?
我正在做一些大型的计算,涉及到mysql连接停留很长时间和大量的数据。我正面临这个“Mysql走开的问题”。所以我试着优化查询,但这并没有帮助我,然后我增加了mysql变量限制,默认设置为较低的值。
wait_timeout max_allowed_packet
对于任何适合你的限制,它应该是任何数字* 1024(字节)。您可以使用'mysql -u username - p'命令登录到终端,并可以检查和更改这些变量限制。