You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行mysqli_stmt->execute()触发“MySQL server has gone away”错误求助

解决 "MySQL server has gone away" 错误的思路

嘿,你碰到的这个Fatal error: Uncaught mysqli_sql_exception: MySQL server has gone away错误确实挺棘手的,报错发生在database.php第84行的mysqli_stmt->execute()调用上。结合社区里的常见案例和实践经验,我帮你梳理下核心原因和对应的解决方向:

  • MySQL服务器端连接超时设置过小:服务器的wait_timeout和interactive_timeout变量决定了空闲连接被自动断开的时间,如果这两个值设置得太低,长时间空闲的连接就会被服务器踢掉。你可以先执行这条命令查看当前配置:

    SHOW VARIABLES LIKE '%timeout%';
    

    如果数值确实偏小,比如默认的8小时(28800秒)都不够你的业务场景,就修改my.cnf(Windows是my.ini)文件,调整后重启MySQL服务:

    wait_timeout = 28800
    interactive_timeout = 28800
    
  • 数据包大小超过服务器限制:如果你的查询语句、要插入的数据集太大,超过了MySQL的max_allowed_packet配置,也会触发这个错误。先查当前值:

    SHOW VARIABLES LIKE 'max_allowed_packet';
    

    默认值通常是1M或4M,根据业务需求调大,比如设置为64M:

    max_allowed_packet = 64M
    
  • 你已排除的情况:mysqli对象未关闭就复用:既然你确认不是这个问题,那就暂时跳过,但如果其他排查都没效果,也可以再回头检查下连接复用的逻辑有没有隐藏的疏漏。

另外还有两个额外的排查方向:

  • 查看MySQL服务器的日志,确认是否有中途重启、崩溃的记录,服务器重启会导致所有现有连接失效
  • 检查应用和MySQL服务器之间的网络稳定性,网络波动、防火墙拦截也可能导致连接意外断开

内容的提问来源于stack exchange,提问作者Aaron Esau

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:08:12