我试图通过phpMyAdmin导入一个大的sql文件…但它一直显示错误
“MySql服务器已经消失”
怎么办呢?
我试图通过phpMyAdmin导入一个大的sql文件…但它一直显示错误
“MySql服务器已经消失”
怎么办呢?
当前回答
如果你在OS X上使用MAMP,你需要改变MySQL模板中的max_allowed_packet值。
你可以在文件>编辑模板> MySQL my.cnf 然后只需搜索max_allowed_packet,更改值和 保存。
其他回答
我有类似的错误,今天复制数据库(MySQL服务器已经离开…),但当我试图重新启动MySQL。服务器重启出错
ERROR! The server quit without updating PID ...
我是这样解决的: 我打开Applications/Utilities/并运行Activity Monitor
quit mysqld
然后就能解决误差问题了
mysql.server restart
如果需要很长时间才能失败,则扩大wait_timeout变量。
如果它马上失败,放大max_allowed_packet变量;如果它仍然不工作,确保命令是有效的SQL。我的书有未转义的引号,把一切都搞砸了。
此外,如果可行,可以考虑将单个SQL命令的插入数量限制为1000。您可以创建一个脚本,通过重新引入INSERT…每n个插入部分。
我用这个简短的/etc/mysql/my.cnf文件解决了我的问题:
[mysqld]
wait_timeout = 600
max_allowed_packet = 100M
我更新了“max_allowed_packet”到1024M,但它仍然不能工作。结果发现我的部署脚本正在运行:
mysql --max_allowed_packet=512M --database=mydb -u root < .\db\db.sql
如果要这样做,请确保从命令行显式地指定一个更大的数字。
如果增加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变量没有帮助。