增加MySQL导入文件大小限制

3
我正在尝试将一个MySQL文件导入到我的cPanel phpMyAdmin中,但是我收到了这个错误消息:“#1153 - Got a packet bigger than 'max_allowed_packet' bytes”。
我也尝试使用Putty。但是出现相同的错误消息。我不知道如何在cPanel中更改MySQL的最大上传大小。
请帮帮我,非常感谢。

如果文件是sql.gz格式,文件大小约为4.6MB。 - Theepan K.
如果只是 .sql 文件,则大小为 46MB。 - Theepan K.
4个回答

12

这个错误与php.ini无关,明显是来自DBMS的错误消息。

您可以在my.cnf文件中增加max_allowed_packet的值:

[mysqld]
max_allowed_packet = 128M

重启您的mysqld之后它应该可以正常工作(对于更大的数据,请增加该值)

如果您尝试使用putty导入,我猜您正在使用命令行中的mysql,在这种情况下,您可以使用--max_allowed_packet参数启动mysql,例如:

mysql --max_allowed_packet=128M -u root -p sampledb < dump.sql

如果你在正在运行的 MySQL 会话中获取文件,则可以通过以下方式设置参数:

set global max_allowed_packet=128M;

最后一个示例只在下一次重新启动mysqld之前有效,如果需要永久解决方案,请坚持使用我的第一个示例。


是的,你说得对。这不是php.ini的问题。我该如何找到my.cnf文件? - Theepan K.
我尝试了这个命令:mysql --max_allowed_packet=128M -u root -p sampledb < dump.sql,但是错误信息还是一样的 :( - Theepan K.
@my.cnf文件通常位于Linux系统的/etc/目录下。你能否在MySQL中执行以下操作:展示类似于'max_allowed_packet'的变量?以哪个用户身份连接数据库? - Flo Doe

3

请执行命令 "php -i | grep php.ini" 查看 php.ini 文件的位置。

打开 php.ini 文件并修改 "upload_max_filesize" 参数,然后重启 Apache(假设您使用的是 Apache 服务器)。


谢谢。是的,我有Apache。但是所有这些都在cpanel中吗?我的意思是php.ini和重新启动选项? - Theepan K.
如果您使用共享主机,那可能是更改设置的问题。 - safarov

0
解决方法是增加MySQL守护进程的max_allowed_packet。您可以通过以超级用户身份登录并运行以下命令来对正在运行的守护进程执行此操作。
# mysql -u admin -p

mysql> set global net_buffer_length=1000000;
Query OK, 0 rows affected (0.00 sec)

mysql> set global max_allowed_packet=1000000000;
Query OK, 0 rows affected (0.00 sec)

然后导入你的转储:

gunzip < dump.sql.gz | mysql -u admin -p database

0

php.ini 中设置这些值解决了我的问题:

php_admin_value upload_max_filesize 128M
php_admin_value post_max_size 128M
php_admin_value max_execution_time 360
php_admin_value max_input_time 360

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接