gatewayworker中使用tcp協議連接硬件設備獲取數據報錯解決辦法!


運行后過段時間報錯,

 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);

前面加上@,強行隱藏報錯信息,問題得到了完美解決,開心一笑


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM