2015-02-05 22 views
6

Tôi nhận được những điều sau đây hàng ngày. Các tập lệnh của tôi đang chạy qua các công việc cron. Bất cứ ai có thể giúp đỡ để sửa lỗi này?Máy chủ MySQL đã biến mất - Python

File "/usr/lib64/python2.6/site-packages/MySQLdb/cursors.py", line 174, in execute 
    self.errorhandler(self, exc, value) 
    File "/usr/lib64/python2.6/site-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler 
    raise errorclass, errorvalue 
_mysql_exceptions.OperationalError: (2006, 'MySQL server has gone away') 

Mã của tôi:

def get_id(test_mysql_conn,id): 
    cursor = test_mysql_conn.cursor() 
    cursor.execute("""select id from test where id = %s """, (id)) 
    row = cursor.fetchone() 
    if row is not None: 
     return row[0] 
    return 0 
+1

Hãy xem câu trả lời này: http://stackoverflow.com/a/982873/974317 –

+0

kiểm tra [this] (http://dev.mysql.com/doc/refman/5.0/en/gone-away.html). –

+0

Để biết thông tin của bạn, lỗi này có thể xảy ra khi bạn vượt quá kích thước gói tối đa: xem [tại đây] (http://serverfault.com/a/528183/341327) – PlasmaBinturong

Trả lời

1

Thử follwing

if (os.getenv('SERVER_SOFTWARE') and os.getenv('SERVER_SOFTWARE').startswith('Google App Engine/')): 
      db = MySQLdb.connect(unix_socket = UNIX_SOCKET + INSTANCE_NAME, host =" HOST/IP", db = "DB_Name", user = "User_Name") //if your mysql is on google server 
     else: 
      db = MySQLdb.connect(host = "HOST/IP", port = "Port_number", db = "DB_name", user = "User_Name", passwd = "password") 

    cursor = db.cursor() 
    cursor.connection.autocommit(True) 

except Exception, err: 
    logging.info("Error In DataBase Connection : " + traceback.format_exc()) 
    return 'DataBaseProblem'   
try: 
    sql = query+str(req_args) 
    logging.info("QUERY = "+str(sql)) 
    cursor.execute(sql) 
    procedureResult = cursor.fetchall(); 
    if str(procedureResult) == '()': 
     logging.info("Procedure Returned 0 Record") 
     procedureResult = 'DataBaseProblem' 


    #logging.info("procedureResult : " + str(procedureResult)) 
except Exception, err: 
    #trackBack = str (traceback.format_exc()) 
    #raise Exception('DataBaseProblem',trackBack) 
    procedureResult="DataBaseProblem" 

cho số cổng mysql được 3.306

0

Điều này xảy ra khi bạn mở một kết nối MySQL nhưng không chặt chẽ nó. Có một thời gian chờ về phía MySQL của sự vật.

Một điều bạn có thể làm là đóng kết nối khi bạn sử dụng xong. Một cách khác là sử dụng ORM có hỗ trợ tính năng này hoặc gộp nhóm được xây dựng trong (SQLAlchemy là một cái tôi tin tưởng.)

Các vấn đề liên quan