具體問題:
第二個問題呢就是 原因大概是醬紫的
在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:我今天真的是有點懷疑自己是不是入錯行了真的)