mySQL數據庫鏈接錯誤
- 錯誤1
- 錯誤2
- 長鏈接短連接
應用場景需要一直訪問mySQL數據庫,遇到如下錯誤:
錯誤1
釋放已經釋放的數據庫鏈接conn.,或者,操作已經釋放的數據庫鏈接conn.或者失去鏈接后再操作數據庫都可能會報這個錯誤
aise err.InterfaceError("(0, ‘’)")
pymysql.err.InterfaceError: (0, ‘’)
錯誤2
pymysql.err.OperationalError: (2013, ‘Lost connection to MySQL server during query ([Errno 110] Connection timed out)’)
解決:解決:查看了好多博客文檔,都說是數據庫鏈接的問題。mySQL內置了ping()方法,能在數據庫鏈接丟失時再次鏈接數據庫。可以在合適的地方借助try expect 語句使用.ping()方法重新鏈接。
圖截至pyMySQL的官方文檔:https://pymysql.readthedocs.io/en/latest/modules/connections.html#pymysql.connections.Connection.ping
參考文檔:https://www.cnblogs.com/xuwei1/p/10820516.html
長鏈接短連接
可以通過長短鏈接的方式鏈接數據庫,短連接就是每次鏈接數據庫并操作完之后就釋放該鏈接。長連接就是使用完在較長的時間內不釋放,最長的持續時間是8小時,過了時間,鏈接自動斷開。所以程序中要設定鏈接檢查機制,如果斷開就重新鏈接一下。
長短鏈接各有自己的應用場景(疑惑長連接在數據庫發生變化時能夠獲取刷新后的數據庫么?還沒有測試過)
長短鏈接的鏈接碰撞、資源占用等問題參考下面文檔。
參考文檔:https://www.cnblogs.com/panchanggui/p/9963815.html
長連接斷開之后重鏈接檢查:
https://blog.csdn.net/weixin_43354181/article/details/85894383