MySQL服务器插入1MB及以上图片失败问题排查与解决
问题排查与解决方法
针对"MySQL server has gone away"错误
虽然已修改max_allowed_packet为128M,但仍需排查以下几点:
- 确认配置生效:修改
my.ini后必须重启MySQL服务,执行SHOW VARIABLES LIKE 'max_allowed_packet';查看实际值,同时注意WAMP环境可能存在多个my.ini文件(如MySQL安装目录、WAMP面板配置目录),确保修改的是正确的文件。 - 调整连接超时参数:MySQL的
wait_timeout和interactive_timeout默认值较短,若上传大文件耗时超过超时时间会断开连接。在my.ini中添加或修改:
修改后重启MySQL服务。wait_timeout = 600 interactive_timeout = 600 - PHP驱动超时配置:若使用mysqlnd驱动,需在
php.ini中调整网络读写超时:mysqlnd.net_read_timeout = 600 mysqlnd.net_write_timeout = 600
针对PHP内存耗尽错误
错误提示显示当前内存限制为128M,需扩大PHP内存配额:
- 修改php.ini内存限制:找到WAMP对应Web环境的
php.ini(非CLI版本),将memory_limit = 128M修改为memory_limit = 256M或更高(如512M),重启Apache服务生效。 - 调整phpMyAdmin内存配置:在
C:\wamp64\apps\phpmyadmin5.1.1\config.inc.php中添加或修改:
该值不得超过$cfg['MemoryLimit'] = '256M';php.ini中memory_limit的设置。
额外排查点
- 检查PHP上传临时目录权限:确认
php.ini中upload_tmp_dir指定的目录具备读写权限,避免上传过程中因权限问题中断。 - 考虑分块上传:对于超大文件,避免一次性将整个图片读入内存,可通过分块上传的方式拆分文件后再写入数据库。
内容的提问来源于stack exchange,提问作者Cynik Paul
相关产品推荐
相关产品推荐

