2011-02-23 58 views
4

我的一個升級網站最近已經開始沿着線的每一個管理頁面上噴涌巨大錯誤:如何追蹤Drupal max_allowed_pa​​cket錯誤?

User warning: Got a packet bigger than 'max_allowed_packet' bytes query: UPDATE cache_update SET data = ' ... ', created = 1298434692, expire = 1298438292, serialized = 1 WHERE cid = 'update_project_data' in _db_query() (line 141 of /var/www/vhosts/mysite/mypath/includes/database.mysqli.inc).(其中「...」約1.5萬字的價值序列數據)

我該如何去追蹤錯誤發生的地方?將調試代碼添加到_db_query會有什麼好處,因爲它會被調用太多?

回答

5

沒有必要跟蹤這個,因爲你不能解決它我認爲。

這是來自update.module的緩存,其中包含有關哪些模塊具有更新版本等的信息。所以這是來自該模塊中的一個「_update_cache_set()」調用。

基於胡亂猜測,我會說這是一個在這個函數:http://api.drupal.org/api/drupal/modules--update--update.fetch.inc/function/_update_refresh/6

它基本上是建立一個龐大的陣列與您網站上的所有項目的信息,並嘗試將其保存爲一個單一的序列化值。

您在本網站上安裝了多少個模塊?

我能想到的三種方式來「修復」這個錯誤:

  • 增加max_allowed_pa​​cket的大小。 (在my.conf max_allowed_pa​​cket的設置)
  • 禁用update.module(它不是一個臨時/生產現場有用無論如何,當你需要在一個開發站點更新第一反正)
  • 禁用某些模塊;)
+0

謝謝!我會檢查,可能有一些模塊可以禁用。你認爲禁用足夠了還是需要卸載它們?任何想法爲什麼它經常刷新緩存? – 2011-02-23 07:23:46

+1

如果您遇到該錯誤,那麼數據庫不會更新。下一次運行時,緩存仍然過時,並嘗試再次更新。禁用模塊應該足以不查找它們的更新,但不知道禁用幾個模塊是否會擺脫該錯誤。 – Berdir 2011-02-23 08:45:25

+0

這幫了我,謝謝!在覈心更新模塊 - 可選是一個問題,它不能存儲巨大的blob,然後添加侮辱傷害,並試圖記錄這個大量blob在看門狗:/ – henrijs 2011-03-23 02:53:51

1

我有一個類似的錯誤,一個小時左右轉了一圈。

將存儲器限制增加到512m並仍然存在問題。並認爲這就夠了。所以去了別處。

我用drush清除了緩存,仍然是錯誤,然後查看了數據庫表。

我注意到所有的緩存表都被清除,只有cache_update。我截斷了這張桌子和巴姆,一切正常。我得到了max_input_vars錯誤,因爲我在PHP5.4上。但是這個問題和答案讓我得到了這個修復。不太確定它是如何工作的,但它確實如此。

相關問題