Skocz do zawartości
  • Cześć!

    Witaj na forum RootNode - aby pisać u nas musisz się zarejestrować, a następnie zalogować. Posty pisane z kont niezarejestrowanych nie są widoczne publicznie.

mysql connector errors


szogun

Rekomendowane odpowiedzi

Hej

Od pewnego czasu zmagam się z losowymi crashami aplikacji i już nie wiem co może być przyczyną, poniżej logi z konsoli w momencie zatrzymania się aplikacji

 

 raise errors.InternalError("Unread result found")
mysql.connector.errors.InternalError: Unread result found
Exception in thread Thread-8910:
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/threading.py", line 950, in _bootstrap_inner
    self.run()
  File "/usr/local/lib/python3.9/threading.py", line 888, in run
    self._target(*self._args, **self._kwargs)
  File "/home/xxx/.local/lib/python3.9/site-packages/blinker/base.py", line 266, in send
    return [(receiver, receiver(sender, **kwargs))
  File "/home/xxx/.local/lib/python3.9/site-packages/blinker/base.py", line 266, in <listcomp>
    return [(receiver, receiver(sender, **kwargs))
  File "/home/xxx/pointsbot/main.py", line 149, in on_event
    cursor.execute(f'SELECT points FROM clients WHERE id = {cldbid}')
  File "/home/xxx/.local/lib/python3.9/site-packages/mysql/connector/cursor.py", line 547, in execute
    self._connection.handle_unread_result()
  File "/home/xxxx/.local/lib/python3.9/site-packages/mysql/connector/connection.py", line 1286, in handle_unread_result
    raise errors.InternalError("Unread result found")
mysql.connector.errors.InternalError: Unread result found

 

Odnośnik do komentarza
Udostępnij na innych stronach

Sprawdzałeś odpowiedzi na ten porblem tyczący Pythona:

https://www.google.com/search?client=firefox-b-d&q=mysql++Unread+result+found

https://stackoverflow.com/questions/29772337/python-mysql-connector-unread-result-found-when-using-fetchone

---
All that was required was for buffered to be set to true!
cursor = cnx.cursor(buffered=True)

 

  • Lubię 2
Odnośnik do komentarza
Udostępnij na innych stronach

Tak, sprawdzałem i niestety nie znalazłem odpowiedniego rozwiązania

 

tutaj mam kawałek kodu aplikacji, która już w sobie ma domyślnie dodane

try:
    cnx = mysql.connector.connect(**data['database'])
except mysql.connector.Error as err:
    if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
        print('Something is wrong with your user name or password')
    elif err.errno == errorcode.ER_BAD_DB_ERROR:
        print('Database does not exist')
    else:
        print(err)

cursor = cnx.cursor(buffered=True)

 

Odnośnik do komentarza
Udostępnij na innych stronach

2 godziny temu, mrViperoo napisał:

Może nie ma klienta o podanym ID?

Nie wydaje mi się gdyż ID klienta jest pobierane przy połączeniu

 

48 minut temu, Mion napisał:

Kawałki kodu nic na dają.

Wiesz to nie jest ogólnodostępna aplikacja, mogę jedynie na pw udostępnic kod

P.S poprawka aplikacji może  być odpłatnie jeżeli bd jakiś rażący błąd

Edytowane przez szogun
Odnośnik do komentarza
Udostępnij na innych stronach

No niestety nadal, jeżeli jest ktoś chętny do przeanalizowania aplikacji i jej naprawy odpłatnie to z miłą chęcią się na to piszę (aplikacja nie jest jakaś duza raptem nie całe 400 linijek kodu)

Niestety ja na swoje możliwości wymiękam aby móc to naprawić :)

Odnośnik do komentarza
Udostępnij na innych stronach

A to jest kodowanie wielowątkowe = współbrzmiene  czy "liniowe" w pojedynczym wątku chodzi o zapytania jak są wywoływane   ?

 -- Nie mogłem edytować poprzedniego ---

 

Nie programuje w pythonei, ale obsługa MySQL wygląda "klasycznie":

https://overiq.com/mysql-connector-python-101/executing-queries-using-connector-python/

 

Uniwersalne porady:

- To sprawdź typ danych mając na uwadze, że wartość NULL to nie to samo co "pusty" string ""

- Bufory maja swoja pojemność, wiec przepełnienie możne wywalić błąd
- Połączenia i kursory powinny być otwiera i zamykane

 

import mysql.connector
from mysql.connector.cursor import MySQLCursor

db = mysql.connector.connect(option_files='my.conf', use_pure=True)

cursor = db.cursor()


cursor.execute("select * from city limit 5")

for row in cursor:
    print(row[0], type(row[0]), row[1], type(row[1]) )

cursor.close()
db.close()

 

Sprawdź ja się zachowuje Twój fragment kodu logika od bazy danych  na danych testowych .

 

 

PS Jeśli Twój kod działa wielowątkowo, to już zupełnie inna bajka ;)

  • Lubię 1
Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Korzystając z forum, wyrażasz zgodę na: Warunki użytkowania, Regulamin, Polityka prywatności.