2015-11-19 96 views
2

這讓我感到困惑,我相信這是一個簡單的修復。SQL錯誤發佈數據庫移動

我將數據庫從一臺服務器移到另一臺服務器。創建一個具有正確權限的新帳戶等。

在我的一些腳本中,mySQL輸出此錯誤: PHP警告:發送QUERY數據包時發生錯誤。 PID =

我檢查了max_allowed_pa​​cket,舊的和新的服務器都是一樣的。

我運行的SQL語句是:

UPDATE TABLE WHERE ID = :ID 

包大小應是文不對題; ID只是一個數字。

權限很好,因爲其他UPDATE語句有效。

有什麼我失蹤的副本?

+1

在非常數據庫交互之後,您的代碼是否會執行相應的錯誤檢查和診斷顯示/日誌記錄?如果沒有,現在你有一個很好的理由來解決它。實際的錯誤可能發生在其他地方,但是代碼忽略它在不一致的狀態下操作,從而發送包的錯誤。 –

+3

我很驚訝你沒有在你的服務器上收到查詢語法錯誤 –

+0

。可能會在mysql之外設置一個最大閾值來拒絕請求,或向數據包添加更多的數據,從而導致您收到錯誤。我會向您的託管服務提供商提交支持案例,以便就此問題提供意見。 –

回答

2

嘗試設置wait_timeout在你的MySQL配置較高的值,例如28800

腓可能會潛在地失去了與MySQL守護進程的連接,由於低wait_timeout值。

+0

這樣做了!我必須再等八個小時才能獎賞你的賞金 –

0

由於超時設置,連接可能已經下降。檢查WAIT_TIMEOUT值

SHOW SESSION VARIABLES LIKE "wait_timeout"; 
SHOW GLOBAL VARIABLES LIKE "wait_timeout"; 

設置更高的值,如果需要

SET @@GLOBAL.wait_timeout = 28800 

這可能是也max_allowed_pa​​cket的大小

的設置有問題要更改設置,在my.ini的文件。在您的文件中包含[mysqld]下的單行

max_allowed_packet=500M 

現在重新啓動MySQL服務,您就完成了。