PDOException:常规错误:2006 MySQL服务器已经消失

时间:2015-10-13 08:35:35

标签: mysql drupal exception-handling

Drupal 7

每次访问Configuration>时都会收到此错误搜索和元数据>网址别名>模式(localhost / admin / config / search / path / patterns)

原始

  

PDOException:SQLSTATE [HY000]:一般错误:2006 MySQL服务器有   消失了:SELECT 1 AS表达式FROM {variable}变量WHERE(   (name =:db_condition_placeholder_0));阵列(   [:db_condition_placeholder_0] => drupal_css_cache_files)in   variable_set()(第991行)   /home/www/icts-website/includes/bootstrap.inc)。

其他

  

PDOException:SQLSTATE [HY000]:一般错误:2006 MySQL服务器有   消失了:INSERT INTO {watchdog}(uid,类型,消息,变量,   严重性,链接,位置,引用,主机名,时间戳)值   (:db_insert_placeholder_0,:db_insert_placeholder_1,   :db_insert_placeholder_2,:db_insert_placeholder_3,   :db_insert_placeholder_4,:db_insert_placeholder_5,   :db_insert_placeholder_6,:db_insert_placeholder_7,   :db_insert_placeholder_8,:db_insert_placeholder_9);阵列(   [:db_insert_placeholder_0] => 1 [:db_insert_placeholder_1] => PHP   [:db_insert_placeholder_2] => %type:!%函数中的消息(行%行   %file)。 [:db_insert_placeholder_3] =>   一个:6:{S:5:"%类型&#34 ;; S:12:" PDOException&#34 ;; S:8:"消息&#34 ;; S:!235: " SQLSTATE [HY000]:   一般错误:2006 MySQL服务器已经消失:SELECT 1 AS表达式   FROM {variable}变量WHERE((name =:db_condition_placeholder_0)   );数组([:db_condition_placeholder_0] => drupal_css_cache_files   )   &#34 ;; S:9:"%功能&#34 ;; S:14:" variable_set()&#34 ;; S:5:"%文件&#34 ;;小号:45:" /home/www/icts-website/includes/bootstrap.inc" ;; S:5:"%线&#34 ;; I:991; S:14:&#34 ; severity_level&#34 ;; I:3;}   [:db_insert_placeholder_4] => 3 [:db_insert_placeholder_5] =>   [:db_insert_placeholder_6] =>   http://localhost/admin/config/search/path/patterns   [:db_insert_placeholder_7] => http://localhost/   [:db_insert_placeholder_8] => 10.0.8.14 [:db_insert_placeholder_9] =>   1444714070)在dblog_watchdog()中(第160行)   /home/www/icts-website/modules/dblog/dblog.module)。

在关机功能中抛出未捕获的异常。

  

PDOException:SQLSTATE [HY000]:一般错误:2006 MySQL服务器有   消失了:DELETE FROM {semaphore} WHERE(value =   :db_condition_placeholder_0);数组([:db_condition_placeholder_0]   => 399784779561c9655b48719.42544548)在lock_release_all()中(/home/www/icts-website/includes/lock.inc的第269行)。

我用Google搜索了解决方案,我还将max_allowed_pa​​cket增加到了32M但仍然存在错误页面。

我将非常感谢您帮助解决此问题。

my.cnf文件详情如下:

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

# include all files from the config directory
!includedir /etc/my.cnf.d

max_allowed_packet = 32M

我正在使用CentOS 7和MySQL。

2 个答案:

答案 0 :(得分:3)

是的,此错误与解析大量数据有关,因此数据库失败,因为它无法处理由于给定限制而导致的此类大小,因此服务器会超时并关闭连接。

要解决此问题,您需要在max_allowed_packet下的my.cnf(例如~/.my.cnf)中进一步提高[mysqld]的价值,例如

[mysqld]
max_allowed_packet=256M

尝试256M,如果没有帮助,请尝试进一步增加(例如1G)。

在您的情况下,我认为max_allowed_packet应该在[mysqld]部分下,而不是[mysqld_safe]下,因此设置应用于正确的组件。

有关详细信息,请参阅:B.5.2.9 MySQL server has gone away

另一件事是,在这种特殊情况下它发生在关闭函数中(这是在Drupal完成站点处理之后),因此它可能与某些cron或调试任务有关。

答案 1 :(得分:1)

看起来你的my.cnf缺少一些可能有用的InnoDB条目

$.getJSON('get.php',{cmd:"1", elem:$('#elem')},function(data) { // ... }

我的MySQL配置中有这些额外的行。它可能是也可能不是你的解决方案,但绝对值得一试。如果这没有帮助,请告诉我。您可能需要稍微调整这些值,具体取决于您的环境。

- 在更改my.cnf后别忘了重启MySQL。