運行后過段時間報錯,
Warning: Error while sending STMT_PREPARE packet. PID=1776 in D:\phpStudy\WWW\ap
i\mysql-master\src\Connection.php on line 1739
其內容在mysql類里面,
/**
* 關閉連接
*/
public function closeConnection()
{echo 88888;
$this->pdo = null;
}
加入打印8888后,打印錯誤為:
Warning: PDO::prepare(): MySQL server has gone away in E:\work\xueshengka\api\my
sql-master\src\Connection.php on line 1747
網上的解決辦法:
由於我等待消息隊列是一個長連接,而我在等待回調前有個數據庫連接,數據庫的wait_timeout=28800,所以只要下一條消息離上一條消息超過8小時,就會出現這個錯誤,我把wait_timeout設置成10,並且捕獲異常,發現真實的報錯是 MySQL server has gone away ,
所以只要在把等待回調前那次數據庫連接主動close掉就可以解決問題
只說出了原因,並為解決錯誤,所以本人親自試驗,在執行完sql后關閉mysql連接,然后重新實例化sql類,執行新的連接數據庫操作,結果。。。。。。並沒有 卵用
最后弄了一天較勁腦汁,終於找到了解決辦法那就是!!!!在Connection連接數據庫類里面將報錯行,$this->sQuery = @$this->pdo->prepare($query);
前面加上@,強行隱藏報錯信息,問題得到了完美解決,開心一笑
