我试图通过phpMyAdmin导入一个大的sql文件…但它一直显示错误
“MySql服务器已经消失”
怎么办呢?
我试图通过phpMyAdmin导入一个大的sql文件…但它一直显示错误
“MySql服务器已经消失”
怎么办呢?
当前回答
我正在做一些大型的计算,涉及到mysql连接停留很长时间和大量的数据。我正面临这个“Mysql走开的问题”。所以我试着优化查询,但这并没有帮助我,然后我增加了mysql变量限制,默认设置为较低的值。
wait_timeout max_allowed_packet
对于任何适合你的限制,它应该是任何数字* 1024(字节)。您可以使用'mysql -u username - p'命令登录到终端,并可以检查和更改这些变量限制。
其他回答
发生这种情况的另一个原因是内存不足。检查/var/log/messages,确保你的my.cnf没有设置成导致mysqld分配比你的机器更多的内存。
您的mysqld进程实际上可以被内核杀死,然后由“safe_mysqld”进程重新启动,而您却没有意识到这一点。
使用top并在它运行时观察内存分配,看看您的净空是多少。
在更改my.cnf之前对其进行备份。
我也有同样的问题
$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
确保mysqld进程不会因为systemd这样的服务管理器而重新启动。
我在《流浪》中遇到过这个问题。配置调整没有帮助。原来这是系统杀死我的服务每次当它占用太多的内存。
当我导入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,您还可以使用它来设置其中的一些或全部。
如果增加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变量没有帮助。