Wenn Sie die folgende Meldung beim Versuch eines
ROLLBACK
erhalten, so bedeutet dies, dass
mindestens eine in der Transaktion verwendete Tabelle gar keine
Transaktionen unterstützt:
Änderungen an einigen nicht transaktionalen Tabellen konnten nicht zurückgerollt werden
Diese nichttransaktionssicheren Tabellen werden von der
ROLLBACK
-Anweisung gar nicht betroffen.
Wenn Sie nicht absichtlich transaktionssichere und
nichttransaktionssichere Tabellen in der Transaktion mischen,
tritt diese Fehlermeldung wahrscheinlich auf, weil eine Tabelle,
die Sie für transaktionssicher gehalten haben, dies in
Wirklichkeit nicht ist. Das kann passieren, wenn Sie eine
Tabelle mit einer transaktionssicheren Speicher-Engine anlegen,
die nicht von Ihrem mysqld-Server
unterstützt wird (oder mit einer Startoption ausgeschaltet
wurde). Wenn mysqld eine Speicher-Engine
nicht unterstützt, wird eine MyISAM
-Tabelle
angelegt, und diese ist nicht transaktionssicher.
Welche Speicher Engine eine Tabelle verwendet, erfahren Sie mit folgenden Anweisungen:
SHOW TABLE STATUS LIKE 'tbl_name
'; SHOW CREATE TABLEtbl_name
;
Siehe Abschnitt 13.5.4.21, „SHOW TABLE STATUS
“, und
Abschnitt 13.5.4.6, „SHOW CREATE TABLE
“.
Welche Speicher-Engines Ihr mysqld-Server verwendet, finden Sie mit dieser Anweisung heraus:
SHOW ENGINES;
Sie können jedoch auch nachfolgende Anweisung ausführen und den Wert der Variablen betrachten, die für die von Ihnen gewünschte Speicher-Engine steht:
SHOW VARIABLES LIKE 'have_%';
Um beispielsweise festzustellen, ob die Speicher-Engine
InnoDB
zur Verfügung steht, schauen Sie auf
den Wert der Variablen have_innodb
.
Siehe Abschnitt 13.5.4.9, „SHOW ENGINES
“, und
Abschnitt 13.5.4.24, „SHOW VARIABLES
“.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.