python 連接Mysql 報錯MySQL server has gone away

2006柬采,MySQL server has gone away

By default, MySQL-5.0 does not automatically reconnect.

mysql連接如果長時間idle的話,(時間:默認為8小時)废登,會自動斷開,而且不會為原連接自動恢復。

在python中狐树,如果應用程序某個模塊使用了持久化的db鏈接作谚,則失效后狡相,繼續(xù)使用,會報錯: 2006食磕,MySQL server has gone away

解決辦法: 比較ugly

在每次連接之前尽棕,判斷該鏈接是否有效。 MySQLdb提供的接口是 Connection.ping(),
(奇怪彬伦,ping() 這個方法在 MySQLdb 的文檔中居然沒有文檔化, 害我找了好久)

采用 類似:
try:
conn.ping()
except Excption,e: #實際對應的 MySQLdb.OperationalError 這個異常
conn = new conn

的方法解決

為了測試出 ping()的效果滔悉,
我在代碼中先關閉了 conn, 示意如下:

try: 
   conn.close() 
   conn.ping() 
except Excption,e:      #實際對應的  MySQLdb.OperationalError 這個異常 
   print e 
   conn = new conn 

結果爆出了另外一個錯誤:
InterfaceError: (0, '')

google了一大圈都沒找到正確原因单绑,一度還以為是:
File "/usr/lib/pymodules/python2.6/MySQLdb/cursors.py", line 147, in execute charset = db.character_set_name()
的問題回官, (因為錯誤的traceback 指向了此處...)

實際上: 對任何已經close的conn進行 db相關 操作,包括ping()都會爆出這個錯誤搂橙。

def executeSQL(self,sql=""):
        try:
            self.conn.ping()
        except Exception,e:
            self.log.error("Msql出了問題")
            self.log.error(str(e))
            while True:
                try:
                    self.conn = MySQLdb.connect(self.config.get('mysql_server'),self.config.get('mysql_user'),self.config.get('mysql_pass'),self.config.get('mysql_db_name'),connect_timeout=60,compress=True,charset="UTF8")
                    break
                except Exception,e:
                    self.log.error("嘗試重連接失敗")
                    time.sleep(2)
                    continue
            self.cursor=self.conn.cursor()
        try:
            self.cursor.execute(sql)
            self.conn.commit()
            return 1
        except Exception,e:
            self.log.error(str(e))
            return 0
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末歉提,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子区转,更是在濱河造成了極大的恐慌苔巨,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件废离,死亡現場離奇詭異侄泽,居然都是意外死亡,警方通過查閱死者的電腦和手機蜻韭,發(fā)現死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門悼尾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肖方,你說我怎么就攤上這事闺魏。” “怎么了俯画?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵析桥,是天一觀的道長。 經常有香客問我,道長烹骨,這世上最難降的妖魔是什么翻伺? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮沮焕,結果婚禮上吨岭,老公的妹妹穿的比我還像新娘。我一直安慰自己峦树,他們只是感情好辣辫,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著魁巩,像睡著了一般急灭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谷遂,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天葬馋,我揣著相機與錄音,去河邊找鬼肾扰。 笑死畴嘶,一個胖子當著我的面吹牛,可吹牛的內容都是我干的集晚。 我是一名探鬼主播窗悯,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼偷拔!你這毒婦竟也來了蒋院?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤莲绰,失蹤者是張志新(化名)和其女友劉穎欺旧,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體钉蒲,經...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡切端,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年彻坛,在試婚紗的時候發(fā)現自己被綠了顷啼。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡昌屉,死狀恐怖钙蒙,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情间驮,我是刑警寧澤躬厌,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響扛施,放射性物質發(fā)生泄漏鸿捧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一疙渣、第九天 我趴在偏房一處隱蔽的房頂上張望匙奴。 院中可真熱鬧,春花似錦妄荔、人聲如沸泼菌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哗伯。三九已至,卻和暖如春篷角,著一層夾襖步出監(jiān)牢的瞬間焊刹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工恳蹲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留伴澄,地道東北人。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓阱缓,卻偏偏與公主長得像非凌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子荆针,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內容