关于CI框架报MySQL server has gone away的解决办法
试着在CI框架里面整合了SWOOLE,用Swoole多进程处理数据,最后在数据入库的时候报错了,错误提示为MySQL server has gone away,网上查了一下,有好几种原因会导致这种报错。经过排查,确定是进程之间存在进程隔离不能共用一个mysql链接。需要每个进程单独开一个数据库连接。
解决办法:
每次操作数据库的时候,用 $this->load->database(); 手动加载。
在操作完成之后,使用 $this->db->close(); 关闭数据库链接;
如果上述操作还是无法解决问题,
可能是设置了数据库的自动链接,与手动连接冲突,将 application/config/autoload.php 里面的
$autoload[‘libraries’] = array(‘database’); 改为 $autoload[‘libraries’] = array();即可