欢迎各位兄弟 发布技术文章
这里的技术是共享的
1)我自己遇到的实际情况 是sessions表有问题 ,删掉 重新导一个空的好表就可以了
如何知道sessions有问题呢?
开启devel模块的在最下面显示sql执行语句的功能
看看哪个表执行的时间太长了,超过几千秒
肯定它有问题
(我发现了是sessions表有个insert语句 2千多秒)此时删掉
这个表 重建一个空的好表就可以了,以前也遇到其它出现问题的情况,也是
同样的方法解决的
2)我自己遇到第二个情况 Warning: MySQL server has gone away query: INSERT INTO watchdog
同时发现红色警告 Warning: MySQL server has gone away query: INSERT INTO cache_l10n_update
说明可能是 l10n_update 这个模块有问题 或与mysql版本有冲突(因为mysql导到本地就是好的) ,禁用它就好了
(也就以换一个版本试试,不过平忠没有试过)
还有两种方法 (1) 安装 db_tweaks 模块 if your provider allow you to change mysql session variables db_tweaks 作用
(2)/
database.mysql.inc 136行左右/在
在这一行 trigger_error(check_plain(mysql_error($active_db) ."\nquery: ". $query), E_USER_WARNING);之前
加上下面的代码
//var_dump(E_USER_WARNING);var_dump(check_plain(mysql_error($active_db)));var_dump($query);exit;
if(preg_match("/MySQL server has gone away/",check_plain(mysql_error($active_db))
))
{
if ($debug) {
print '<p>Not attempting to store in DB: '. $query .'<br />'.'</p>';
}
return TRUE;
}
不过 以上的两种法我都没有试过,应该有用
1)在php.ini中设置 memory_limit = 512M
(因为在 settting.php中 ini_set('memory_limit', '512M'); 好像是不起作用,又好像是起作用的)
1)禁用cacherouter模块 去掉setting.php里的设置
1)禁用update status 模块
1)禁用themer devel 模块
一般情况下 只需要改 my.ini(my.cnf) max_allowed_packet = 64M
1)实在不行的话,禁用devel 模块
如果不行 照着下面做 应该是好的
1)把setting.php 中 mysql连接 改成 mysqli连接
2)在my.ini(my.cnf)的文件中作如下更改
3)If you are in shared hosting then go to public html folder
you can find php.ini, and then edit
the mysql.connect_timeout =60
change it to 120 or more
In my case setting mysqli.reconnect = On
in php.ini helped.
以上全改了 好像就行了(总有一种方法合适)(这个改了 好像又有点问题)
1)如果以上还不行的话
把下面代码放到 index.php文件里
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
再用浏览器执行 看哪里出了错