ALTER TABLE
stellt die Tabelle auf den
aktuellen Zeichensatz um. Wenn Sie während der Ausführung von
ALTER TABLE
einen Fehler wegen doppelt
vorhandener Schlüssel bekommen, liegt dies entweder daran, dass
der neue Zeichensatz zwei Schlüssel demselben Wert zuordnet,
oder daran, dass die Tabelle beschädigt ist. Im zweiten Fall
müssen Sie eine REPAIR TABLE
-Anweisung auf
der Tabelle ausführen.
Wenn ALTER TABLE
mit der folgenden
Fehlermeldung abbricht, kann dies daran liegen, dass MySQL bei
einer vorherigen ALTER TABLE
-Operation
abgestürzt ist und noch eine alte Tabelle namens
A-
oder
xxx
B-
in der
Gegend herumfliegt:
xxx
Error on rename of './database/name.frm'
to './database/B-xxx
.frm' (Errcode: 17)
In diesem Fall gehen Sie in das Data Directory von MySQL und
löschen alle Dateien, deren Namen mit A-
oder B-
anfangen. (Oder Sie verschieben sie
an einen anderen Ort, anstatt sie zu löschen).
ALTER TABLE
funktioniert folgendermaßen:
Erzeuge eine neue Tabelle namens
A-
mit
den gewünschten Strukturänderungen.
xxx
Kopiere alle Zeilen der Originaltabelle in
A-
.
xxx
Benenne die Originaltabelle in
B-
um.
xxx
Gib A-
den ursprünglichen Namen der Tabelle.
xxx
Lösche
B-
.
xxx
Wenn bei der Umbenennungsoperation etwas schief geht, versucht
MySQL, die Änderungen rückgängig zu machen. Bei ernsthaften
Problemen (die eigentlich nicht vorkommen sollten) könnte MySQL
die alte Tabelle als
B-
zurücklassen. Mit einer einfachen Umbenennung der
Tabellendateien auf Systemebene müssten Sie Ihre Daten
zurückbekommen.
xxx
Wenn Sie ALTER TABLE
auf einer
transaktionssicheren Tabelle ausführen oder Windows oder OS/2
benutzen, wird ALTER TABLE
eine Sperre der
Tabelle aufheben, falls Sie zuvor eine LOCK
TABLE
-Anweisung auf ihr ausgeführt haben, da
InnoDB
und diese Betriebssysteme keine
Tabelle löschen können, die gerade in Gebrauch ist.
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.