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

“MySql服务器已经消失”

怎么办呢?


当前回答

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

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

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

其他回答

如果增加max_allowed_packet没有帮助。

当我通过Sequel Pro将.sql文件导入我的数据库时,我得到了和你一样的错误。

在将max_allowed_packet提高到512M后,错误仍然存在,所以我在命令行中运行导入:

mysql --verbose -u root -p DatabaseName < MySQL.sql

它给出了以下错误:

ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled

我发现了一些有用的StackOverflow问题:

在从SQL转储恢复数据库时启用二进制模式 Mysql错误:ASCII '\0'当导入sql文件在linux服务器上

在我的情况下,我的.sql文件有点损坏。我们得到的MySQL转储是两个zip文件,需要连接在一起,然后解压缩。我认为解压一开始就中断了,留下了一些奇怪的字符和编码。获得一个新的MySQL转储并正确地解压缩它对我来说很有效。

只是想在这里添加这个,以防其他人发现增加max_allowed_packet变量没有帮助。

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

SET GLOBAL max_allowed_packet=1073741824;

在我的SQL客户端。

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

例如:

max_allowed_packet=20M

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

您的mysqld进程实际上可以被内核杀死,然后由“safe_mysqld”进程重新启动,而您却没有意识到这一点。

使用top并在它运行时观察内存分配,看看您的净空是多少。

在更改my.cnf之前对其进行备份。

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

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

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

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

wait_timeout max_allowed_packet

对于任何适合你的限制,它应该是任何数字* 1024(字节)。您可以使用'mysql -u username - p'命令登录到终端,并可以检查和更改这些变量限制。