2012-12-28 31 views
6

Chạy django qua gunicorn để RDS (AWS mysql), tôi nhìn thấy lỗi này trong nhật ký gunicorn tôi:Mysql + django ngoại lệ: "Commands đồng bộ; bạn không thể chạy lệnh này ngay bây giờ"

Exception _mysql_exceptions.ProgrammingError: (2014, "Commands out of sync; you can't run this command now") in <bound method Cursor.__del__ of <MySQLdb.cursors.Cursor object at 0x690ecd0>> ignored 

Tôi chưa thể tái tạo một cách đáng tin cậy, cũng như tôi không thể theo dõi mã cơ bản đang gây ra nó.

Tôi đang sử dụng con trỏ thô ở một số nơi, sau mô hình này:

cursor = connections['read_only'].cursor() 
sql = "select username from auth_user;" 
cursor.execute(sql) 
rows = cursor.fetchall() 
usernames = [] 
for row in rows: 
    usernames.append(row[0]) 

Ở một số nơi tôi ngay lập tức tái sử dụng con trỏ cho truy vấn khác thực hiện)/fetchall) mẫu ((. Đôi khi tôi không.

Tôi cũng sử dụng các truy vấn quản lý thô ở một số nơi.

Tôi không rõ ràng đóng con trỏ, nhưng tôi không tin rằng mình nên làm như vậy.

Khác hơn là: Tôi không sử dụng bất kỳ thủ tục được lưu trữ nào, không có thông số init_command, cũng như bất kỳ điều gì khác được nêu trong các câu trả lời khác mà tôi đã thấy được đăng ở đây.

Bất kỳ ý tưởng hoặc đề xuất nào về cách gỡ lỗi sẽ được đánh giá cao.

+0

là ngoại lệ này gây cho bạn bất kỳ vấn đề thực sự không phải là hiển thị trong nhật ký? – Air

+0

Có thể trùng lặp các lệnh [Python, "không đồng bộ; bạn không thể chạy lệnh này ngay bây giờ"] (http://stackoverflow.com/questions/11583083/python-commands-out-of-sync-you-cant- run-this-command-now) – e4c5

Trả lời

-3

Check-out https://code.djangoproject.com/ticket/17289

bạn sẽ cần phải làm một cái gì đó như:

while cursor.nextset() is not None: 
    if verbose:               
     print "rows modified %s" % cursor.rowcount 
+0

câu hỏi không đề cập đến thủ tục được lưu trữ ở tất cả (cũng như vé bạn tham khảo). –

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