数据库:MySQL server has gone away )问题求助!

2016-07-07 15:32 来源:www.chinab4c.com 作者:ecshop专家

刚刚用威博数据的空间上线了ECSHOP,但是上传张154K的表格就出现问题: MySQL server has gone away ,部份提示如下:

, '1256759854', '', '0', 'http://') ) [2] => Array ( [error] => MySQL server has gone away ) [3] => Array ( [errno] => 2006 ) [4] => Array ( [message] => MySQL Query Error ) [5] => Array ( [sql] => UPDATE `a1023180350`.`sg_sessions` SET expiry = '1256788654', ip = '113.90.248.240', userid = '0', adminid = '1', user_name='0', user_rank='0', discount='0', email='0', data = 'a:4:{s:12:\"captcha_word\";s:16:\"NTk5ZTI3M2M0YQ==\";s:10:\"admin_name\";s:5:\"ricky\";s:11:\"action_list\";s:3:\"all\";s:10:\"last_check\";i:1256759770;}' WHERE sesskey = '33a3743e7966ec04fa4b989f90946f51' LIMIT 1 ) [6] => Array ( [error] => MySQL server has gone away ) [7] => Array ( [errno] => 2006 ) )

本来我知道可以通过修改数据库的延时或者缓存可以解决问题的,找到空间的技术人员但是不同意修改,于是给我段代码,说要如下操作:
在MYSQL连接断的地方用以下此代码重新连接(如果不优化 这个方法适合)

i0 if(!mysql_ping($this->connection)){
mysql_close($this->connection); //注意:一定要先执行数据库关闭,这是关键
$this->connection = new PropelPDO($dns, $this->config['dbuser'], $this->config['password'],array(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY=>true));

$this->connection->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$this->connection->exec('set names gbk');
/S%w!Y1NH,],D!I5G0}

问题来了,我不知道到底具体加在哪里啊?论坛的的老大帮帮忙啊!不胜感激!

回答:


呵呵你们的空间商真会搞

修改cls_mysql.php 267行
if (!($query = mysql_query($sql, $this->link_id)) && $type != 'SILENT')
{
$this->error_message[]['message'] = 'MySQL Query Error';
$this->error_message[]['sql'] = $sql;
$this->error_message[]['error'] = mysql_error($this->link_id);
$this->error_message[]['errno'] = mysql_errno($this->link_id);

$this->ErrorMsg();

return false;
}

把里面的{}的内容替换成你里面的内容试下。

好的,马上照办!

cls_mysql.php 这个文件在哪里啊,没找到啊,能不能告诉一声,麻烦!

呵呵,上面的热心版主,空间商我是在论坛看到才找的哦,既然已经用了,我可不敢多说什么了!

不好意思是在includes 文件夹下

我也来看看,说两句,呵呵。毕竟一台服务器上有若干空间用户,更改配置一般要重启服务器才能生效,而且可能造成未知的错误。我们的服务器环境都是经过严格测试的,所以不能随意的去更改,即使更改也要等技术人员测试证明不会有其他问题出现才能更改。目的只有一个,为用户提供最稳定的服务,也请楼主理解和谅解,最后感谢您对威博的支持!

好了么,呵呵

没搞了,不传了

坚持

我同样出现这问题,在这儿找答案

修改cls_mysql.php 267行
if (!($query = mysql_query($sql, $this->link_id)) && $type != 'SILENT')
{
$this->error_message[]['message'] = 'MySQL Query Error';
$this->er ...
晓天 发表于 2009-10-29 14:13


不行,楼主的代码也乱码,基本无法运行.也仍有这样出错.

在php.ini里设置wait_timeout = 2880000 可解决这个问题,但这样太久了.时间的定义是如何的?

你好,请问你是什么错误