2015年7月16日 星期四

當Drupal時出現Mysql has gone away的問題時怎麼處理

這兩天Drupal出現問題剛開始時是想要新增Content type時出現這樣的畫面
  
不知道該如何解決時都執行幾次後,整個Drupal竟然沒法進入了。會出現下面這個畫面:


上網爬了很久幾乎都是說要增加mysql的max_allowed_packet到16M以上及加大php的memory limit size。

那就把AWS EC2上的設定改一下囉(我的Drupal 是裝在EC2上)。
先來修改mysql的設定吧。
sudo vim /etc/my.cnf

按 i 輸入以下文字

[mysqld]
max_allowed_packet = 64M

然後按下esc後輸入:wq存檔離開
重新啟動 mysql

sudo service mysqld stop
sudo service mysqld start

但是發現drupal 可以進入了不會出現Additional uncaught exception thrown while handling exception的錯誤但是還是不能新增Content type。
只好改 max_allowed_packet =256M

並一起修改php memory limit
sudo vim /etc/php.ini
找到memory_limit按i輸入修改為
memory_limit = 256M
然後按下esc後輸入:wq存檔離開

重新啟動apache跟mysql
sudo service httpd stop
sudo service httpd start
sudo service mysqld stop
sudo service mysqld start

終於可以成功進入drupal 並新增content type了。
進入後終於找到元兇了.......
因為我之前有安裝過token這個module。

token module 是個需要很大memory的一個模組如果沒有需要的話就關閉好了。


註:後來發現網路上也有一篇再說這個問題的討論,裡面說是auto_nodetitle 這個module照成上述問題的,內有提供兩個patch檔,用來配合修改一下auto_nodetitlle.module後,這個問題應該算是解決了。

https://www.drupal.org/node/1391706