2012-12-28 8 views
6

Running Django poprzez gunicorn do RDS (AWS mysql), widzę ten błąd w moich dziennikach gunicorn:Mysql + django wyjątek: "Polecenia zsynchronizowany; nie można uruchomić to polecenie teraz"

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 

Nie mogę jeszcze odtworzyć go w niezawodny sposób, ani nie mogę znaleźć kodu źródłowego, który go powoduje.

używam surowych kursorów w niektórych miejscach, w następstwie tego wzoru:

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]) 

W niektórych miejscach natychmiast ponownie wykorzystać kursor do innego zapytania execute() /() fetchAll wzór. Czasami nie.

Używam również surowych zapytań menedżera w niektórych miejscach.

Nie zamykam bezpośrednio kursorów, ale nie wierzę, że powinienem.

Poza tym: Nie używam żadnych procedur przechowywanych, parametrów init_command ani innych informacji wskazanych w innych odpowiedziach, które widziałem tutaj.

Wszelkie pomysły i sugestie dotyczące debugowania będą mile widziane.

+0

Czy ten wyjątek powodując Ci żadnych rzeczywistych problemów innych niż pojawiać się w dzienniku? – Air

+0

Możliwy duplikat [Python, "polecenia niezsynchronizowane, nie możesz teraz uruchomić tego polecenia"] (http://stackoverflow.com/questions/11583083/python-commands-out-of-sync-you-cant- run-this-command-now) – e4c5

Odpowiedz

-3

Wyjazd https://code.djangoproject.com/ticket/17289

musisz zrobić coś takiego:

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

pytanie nie wspomina w ogóle o procedurach przechowywanych (tak jak odnosi się do biletu, który polecasz). –