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

“MySql服务器已经消失”

怎么办呢?


当前回答

GoDaddy共享主机

在GoDaddy共享托管帐户上,调整PHP.ini等文件是很棘手的。然而,还有另一种方法,它非常适合我。(我刚刚成功上传了一个3.8Mb的.sql文本文件,包含3100行和145个cols。使用导入命令在phpMyAdmin,我得到了可怕的MySQL服务器已经离开错误,没有进一步的信息。)

我发现马特·布彻的答案是正确的。和Matt一样,我也尝试过各种技巧,从将MySQL数据库导出成小块,到编写脚本将大的导入分解成小块。但以下是有效的方法:

(1) CPANEL—> FILES (group)—> BACKUP

(2a)在“部分备份”标题下… (2b)“下载MySQL数据库备份” (2c)选择你的数据库并下载备份(这一步可选,但明智)

(3a)在2b的右边,在“恢复MySQL数据库备份”的标题下 从您的本地驱动器中选择.SQL导入文件 (3c)真正的幸福将属于你(很快....)我只用了5秒钟

我可以使用这种方法导入单个表。我的数据库中没有其他任何东西受到影响——但这就是上面的步骤(2)的目的。

注: a.如果您不确定如何创建. sql导入文件,请使用phpMyAdmin导出表并修改文件结构。

来源: 马特·布彻2010文章

其他回答

确保mysqld进程不会因为systemd这样的服务管理器而重新启动。

我在《流浪》中遇到过这个问题。配置调整没有帮助。原来这是系统杀死我的服务每次当它占用太多的内存。

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

你可以在文件>编辑模板> MySQL my.cnf 然后只需搜索max_allowed_packet,更改值和 保存。

任何关于数据包大小或超时的解决方案对我都没有任何影响。我需要禁用ssl

mysql -u -p -hmyhost.com --disable-ssl db < file.sql

https://dev.mysql.com/doc/refman/5.7/en/encrypted-connections.html

我也有同样的问题

$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

对我来说,这个解决方案不可行,所以我执行了

SET GLOBAL max_allowed_packet=1073741824;

在我的SQL客户端。

如果不能改变MYSql服务运行,你应该停止服务,并改变my.ini文件中的变量。

例如:

max_allowed_packet=20M