
644 MySQL - Technische Referenz f¨ur Version 5.0.1-alpha
6. Wenn Sie immer noch nicht herausfinden k¨onnen, was schief geht, erzeugen Sie einen
minimalen Test, der mit mysql test < anfrage.sql laufen gelassen werden kann,
um Ihre Probleme aufzuzeigen. Sie k¨onnen eine Testdatei mit mysqldump --quick
datenbanktabellen > anfrage.sql erzeugen.
¨
Offnen Sie die Datei in einem Editor,
entfernen Sie ein paar Einf¨ugezeilen (wenn es davon zu viele gibt) und f¨ugen Sie Ihr
SELECT–Statement am Ende der Datei an.
Testen Sie, ob es hiermit immer noch das Problem gibt:
shell> mysqladmin create test2
shell> mysql test2 < anfrage.sql
A.6 Tabellendefinitionsbezogene Themen
A.6.1 Probleme mit ALTER TABLE.
ALTER TABLE ¨andert eine Tabelle zum aktuellen Zeichensatz. Wenn Sie w¨ahrend ALTER
TABLE einen Fehler wegen doppelter Schl¨usseleintr¨age bekommen, liegt das entweder daran,
dass die neuen Zeichens¨atze auf bei Schl¨usseln auf dieselben Werte gemappt sind, oder dass
die Tabelle besch¨adigt ist, wobei Sie REPAIR TABLE auf die Tabelle laufen lassen sollten.
Wenn ALTER TABLE mit einem Fehler wie folgt stirbt:
Error on rename of ’./datenbank/name.frm’ to ’./datenbank/B-a.frm’ (Errcode: 17)
Kann das Problem darin bestehen, dass MySQL bei einem vorhergehenden ALTER TABLE
a/jointfilesconvert/293675/bgest¨urzt ist und es eine alte Tabelle namens ‘A-etwas’ oder ‘B-etwas’ gibt, die herum
liegt. Gehen Sie in diesem Fall ins MySQL-Daten-Verzeichnis und l¨oschen Sie alle Dateien,
die Namen wie A- oder B- haben. (Statt l¨oschen k¨onnen Sie sie auch an eine andere Stelle
verschieben.)
ALTER TABLE funktioniert auf folgenden Weise:
• Erzeugt eine neue Tabellen namens ‘A-xxx’ mit den angeforderten
¨
Anderungen.
• Alle Zeilen der alten Tabelle werden nach ‘A-xxx’ kopiert.
• Die alte Tabelle wird in ‘B-xxx’ umbenannt.
• ‘A-xxx’ wird in Ihren alten Tabellennamen umbenannt.
• ‘B-xxx’ wird gel¨oscht.
Wenn etwas bei dieser Umbennungsoperation fehlschl¨agt, versucht MySQL, die
¨
Anderungen
r¨uckg¨angig zu machen. Wenn etwas Schwerwiegendes schief geht (was nat¨urlich passieren
kann), l¨aßt MySQL eventuell die alte Tabelle als ‘B-xxx’, aber ein einfaches Umbenennen
auf Systemebene sollte Ihre Daten zur¨uckbringen.
A.6.2 Wie man die Reihenfolge der Spalten in einer Tabelle
¨andert
Im großen und Ganzen geht es bei SQL darum, die Applikation vom Daten-Speicherformat
zu abstrahieren. Sie sollten immer die Reihenfolge angeben, in der Sie Ihre Daten abrufen
wollen. Beispiel:
Comentarios a estos manuales