postgreSql 報錯 (psycopg2.errors.IdleInTransactionSessionTimeout) terminating connection due to idle-in-transaction timeout 解決


具體問題:

 

 

 

 第二個問題呢就是 原因大概是醬紫的

在mysql超過wait_timeout后,連接會掛掉,服務就會報錯 OperationalError: (_mysql_exceptions.OperationalError) (2006, 'MySQL server has gone away') ,由於也sqlalchemy關閉了autocommit,隱式使用了事務,還會有錯誤StatementError: (sqlalchemy.exc.InvalidRequestError) Can't reconnect until invalid transaction is rolled back
網上的解決方式呢如下:

解決方案一:打開autocommit

sqlalchemy打開autocommit后, 就會停止使用事務,生成的查詢語句立即執行

解決方案二:

在所有訪問數據庫的地方加異常捕獲,報異常時rollback

 

但是呢,在我這並不好使 (此時我的內心是崩潰的 媽媽耶 甚至懷疑自己是不是入錯行了 作為一個前端 跑來搞后端代碼 不知死活blablabla)

繼續解決問題死馬當活馬醫:

因為我的代碼里面就是用的解決方案二,因此對我沒有卵用。

嘗試:在每個return 語句中 都加上一句:db.session.rollback() AND db.session.close()

ok,截止到目前解決了百分之五十的問題 但是我是個程序員所以我也不知道他是咋解決的 反正第二個截圖里面的XXXrollback()已經不報了 但是持續的報第一個錯誤。

繼續解決問題:

因為我的代碼里有的執行了兩句sql,在每個sql語句執行完畢 我得到需要的值之后執行db.session.close()

至此 問題圓滿解決。來自一個小前端面對后端問題瑟瑟發抖了好久之后的逼逼叨

以上。

(ps:我今天真的是有點懷疑自己是不是入錯行了真的)


免責聲明!

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



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