用户
 找回密码
 入住 CI 中国社区
搜索
查看: 5940|回复: 11
收起左侧

[HELP] mysql has gone away错误如何解决

[复制链接]
发表于 2010-11-15 13:13:45 | 显示全部楼层 |阅读模式
我用codeigniter做的一个项目,里面有大量数据读取,更新操作,
运行4个小时左右,就有mysql has gone away的错,

网上解决的办法好像是mysql_ping,

在codeigniter中如何调用mysql_ping,这个问题又要如何解决呢?
 楼主| 发表于 2010-11-15 13:32:08 | 显示全部楼层
老大快来呀,我要撑不住了,mysql has gone away是不是再连接一次就可以???

我市在构造器里

function User_model()
    {
        parent::Model();
        $this->load->database();
    }

load的database,在函数里再调用一次$this->load->database();
是不是就重新连接了?
发表于 2010-11-15 13:44:52 | 显示全部楼层
修改my.ini

打开my.ini 找到[MySQLd]这一行,下面添加

[MySQLd]

#扩大缓冲区
max_allowed_packet=32M  
保存后,重启MySQL,试试呢
发表于 2010-11-15 13:59:13 | 显示全部楼层
这个问题与你数据库设置的wait-timeout有关系,除了pconnect之外,当一个数据库连接在你设置的wait-timeout时间之内没有任何操作,数据库就会强行关闭。你可以增大这个值,或者使用mysql自带的函数mysql_ping()在操作前进行校验,在CI中,需要你自己扩展一下
 楼主| 发表于 2010-11-15 14:06:26 | 显示全部楼层
服务器的mysql,我不能修改他的配置,
我现在想
每次调用 我的insert_books 函数时
连接一次,
ci里连接用什么函数
发表于 2010-11-15 14:20:05 | 显示全部楼层
去看源代码,用的无非还是mysql_connect
 楼主| 发表于 2010-11-15 18:43:37 | 显示全部楼层
各位大哥,你们真是不给力压,
http://codeigniter.org.cn/user_guide/database/connecting.html

手册里的这个东东是什么呀

$this->db->reconnect();
发表于 2010-11-15 19:21:16 | 显示全部楼层
回复 7# wangjialei


   呵呵,还是手册给力吆
发表于 2010-11-15 23:56:03 | 显示全部楼层
回复 7# wangjialei
这个方法只是注销掉当前的链接,而没有重新连接
 楼主| 发表于 2010-11-16 16:44:32 | 显示全部楼层
经过我今天一天测试,问题解决了,就是用得$this->db->reconnect();

本版积分规则