Anhang A: Probleme und h¨aufige Fehler 627
nie ben¨otigen), kann sich ein Administrator mit dieser Berechtigung einloggen und SHOW
PROCESSLIST benutzen, um herauszufinden, was schief geht. Siehe Abschnitt 5.5.5 [SHOW],
Seite 243.
Die maximale Anzahl von Verbindungen ist davon abh¨angig, wie gut die Thread-Bibliothek
auf der Plattform ist. Linux oder Solaris sollten in der Lage sein, 500 bis 1000 gleichzeitige
Verbindungen zu unterst¨utzen, abh¨angig davon, wie viel Arbeitsspeicher Sie haben und was
Ihre Clients ausf¨uhren.
A.2.6 Some non-transactional changed tables couldn’t be rolled
back-Fehler
Wenn Sie den Fehler Warning: Some non-transactional changed tables couldn’t be
rolled back erhalten, wenn Sie ein ROLLBACK versuchen, bedeutet das, dass einige der
bei der Transaktion benutzten Tabellen keine Transaktionen unterst¨utzen. Diese nicht
transkationalen Tabellen werden vom ROLLBACK-Statement nicht betroffen.
Der typischste Fall, bei dem dieser Fehler auftritt, ist, wenn Sie versucht haben, eine Tabelle
von einem Typ zu erzeugen, der von Ihrer mysqld-Bin¨ardatei nicht unterst¨utzt wird. Wenn
mysqld einen Tabellentyp nicht unterst¨utzt (oder wenn der Tabellentyp durch die Startop-
tion ausgeschaltet ist), wird statt dessen ein Tabellentyp erzeugt, der dem angeforderten
am n¨achsten entspricht (wahrscheinlich MyISAM.
Sie k¨onnen den Tabellentyp f¨ur eine Tabelle wie folgt ¨uberpr¨ufen:
SHOW TABLE STATUS LIKE ’tabelle’. Siehe Abschnitt 5.5.5.2 [SHOW TABLE STATUS],
Seite 244.
Sie k¨onnen die Erweiterungen, die Ihre mysqld-Bin¨ardatei unterst¨utzt, wie folgt ¨uberpr¨ufen:
show variables like ’have_%’. Siehe Abschnitt 5.5.5.4 [SHOW VARIABLES], Seite 249.
A.2.7 No free memory-Fehler
Wenn Sie eine Anfrage ausf¨uhren und etwas wie folgenden Fehler erhalten:
mysql: No free memory at line 42, ’malloc.c’
mysql: needed 8136 byte (8k), memory in use: 12481367 Bytes (12189k)
ERROR 2008: MySQL client ran No free memory
Beachten Sie, dass sich dieser Fehler auf den MySQL-Client mysql bezieht. Der Grund f¨ur
diesen Fehler ist einfach, dass der Client nicht genug freien Speicher hat, um das gesamte
Ergebnis zu speichern.
Um das Problem zu beheben, pr¨ufen Sie zun¨achst, ob Ihre Anfrage korrekt ist. Sollte sie
vern¨unftigerweise so viele Zeilen zur¨uckgeben? Wenn das der Fall ist, k¨onnen Sie mysql
--quick benutzen, was mysql_use_result() benutzt, um die Ergebnismenge abzurufen.
Hierdurch wird Last vom Client auf den Server verlagert.
A.2.8 Packet too large-Fehler
Wenn ein MySQL-Client oder der mysqld-Server ein Paket erh¨alt, das gr¨oßer als max_
allowed_packet Bytes ist, gibt er einen Packet too large-Fehler aus und schließt die
Verbindung.
Komentarze do niniejszej Instrukcji