|
Errata, Tipps und Ergänzungen zu MySQL 5 (3. Auflage) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Diese Seite beschreibt bekannte Fehler im Buch MySQL 5 (3. Auflage) und gibt einige zusätzliche Tipps und Ergänzungen. Errata zur 2. Auflage finden Sie hier.
Errata
|
|
|
Bei aktuellen Versionen von MySQL bzw. phpMyAdmin bereitet der
Import der mitgelieferten Datei mylibrary.sql Probleme. Bitte
verwenden Sie für den Import diese neue
Version. Alternativ können Sie auch die auf der CD mitgelieferte
Datei verwenden, wenn Sie den Import (wie im Buch beschrieben) so
durchführen:
Auch spadmin sowie einige SP-Beispiele harmonieren nicht mehr mit
aktuellen MySQL- und PHP-Versionen. Diese ZIP-Datei enthält neue Versionen der betroffenen
Dateien und wurde mit PHP 5.2 und MySQL 5.0.27 getestet.
Korrektur: m gibt die Gesamtanzahl der Stellen an (also Vor-
plus Nachkommastellen). m und d werden beim Einfügen von Daten
berücksichtigt. Der Nachkommaanteil wird entsprechend
gerundet. Zahlen, die zu groß sind, werden auf die größte darstellbare
Zahl reduziert. Wenn Sie in einer DOUBLE(5,2)-Spalte den Wert
1234.5678 zu speichern versuchen, speichert MySQL tatsächlich den Wert
999.99. Gleichzeitig wird eine Warnung ausgelöst, die Sie mit SHOW
WARNINGS ansehen können.
Update (ab MySQL 5.0.3): Die maximale Stellenanzahl für
DECIMAL-Zahlen (p) ist 64, die maximale Anzahl der Nachkommastellen
(s) ist 30. Der Zahlenbereich bei DECIMAL(6,3) reicht von 999.999 bis
-999.999. Intern werden die Zahlen nun binär gespeichert (nicht mehr
als Zeichenketten), was die Verarbeitung deutlich schneller macht. Der
Speicherbedarf setzt sich aus Vor- und Nachkommaanteil zusammen und
beträgt jeweils mindestens 4 Byte für die ersten neun Stellen, also 8
Byte für DECIMAL(18, 9). Zusätzliche Stellen werden in einzelne Bytes
gepackt (normalerweise 2 Stellen pro Byte, 9 Stellen in 4 Byte).
Erratum: Ein UNIQUE-Index ist auch für Spalten zulässig, in
denen NULL gespeichert werden kann. Die UNIQUE-Einschränkung bezieht
sich dann auf die Datensätze, die nicht NULL enthalten. Im Gegensatz dazu muss für die Spalten des PRIMARY KEY das Attribut
NOT NULL gelten.
Update: Seit das Buch erschienen ist, hat sich im Bereich
von Stored Procedures und Triggers eine Menge getan. Generell sind
diese Funktionen nur weitgehend stabil und
praxistauglich. Gleichzeitig wurde bei einigen Kommandos die Syntax
angepasst, vereinzelt sind neue Kommandos hinzugekommen. Update (ab MySQL 5.0.9): Rekursion in Stored Procedures hat in
manchen Fällen Probleme verursacht, die bis hin zu einem
Server-Absturz reichen können. Aus diesem Grund wurde Rekursion in SPs
in MySQL 5.0.9 deaktiviert. Die Beispiele auf den Seiten 467
bzw. 484-486 funktionieren daher ab MySQL 5.0.9 nicht mehr! Es ist
geplant, in einer späteren MySQL-Version Rekursion wieder zu erlauben.
Update (ab MySQL 5.0.17): Rekursion in SP-Prozeduren ist
wieder erlaubt, nicht aber in SP-Funktionen und Triggern. Erratum: Die korrekte Syntax lautet ELSEIF, nicht ELSE IF.
Update (ab MySQL 5.0.10): Ab MySQL 5.0.10 müssen Triggernamen
innerhalb einer Datenbank eindeutig sein. An DROP TRIGGER muss nun
[datenbankname.]triggername übergeben werden, nicht mehr
[tabellenname.]triggername. Bei Updates auf 5.0.10 von älteren
Versionen sollten alle Trigger neu erzeugt werden, damit DROP TRIGGER
funktioniert.
Das neue Kommando SHOW TRIGGERS liefert nun eine Liste aller
Trigger der aktuellen Datenbank. Die Ausführung des Kommandos setzt
das SUPER-Privileg voraus. Weiters gibt es in der
INFORMATION_SCHEMA-Datenbank eine neue Triggers-Tabelle, die
Metainformationen zu allen Triggern enthält.
Korrektur: m gibt die Gesamtanzahl der Stellen an (also Vor-
plus Nachkommastellen). m und d werden beim Einfügen von Daten
berücksichtigt. Der Nachkommaanteil wird entsprechend
gerundet. Zahlen, die zu groß sind, werden auf die größte darstellbare
Zahl reduziert. Wenn Sie in einer DOUBLE(5,2)-Spalte den Wert
1234.5678 zu speichern versuchen, speichert MySQL tatsächlich den Wert
999.99. Gleichzeitig wird eine Warnung ausgelöst, die Sie mit SHOW
WARNINGS ansehen können.
Update (ab MySQL 5.0.3): Die maximale Stellenanzahl für
DECIMAL-Zahlen (p) ist 64, die maximale Anzahl der Nachkommastellen
(s) ist 30. Intern werden die Zahlen binär gespeichert. Der
Speicherbedarf setzt sich aus Vor- und Nachkommaanteil zusammen und
beträgt jeweils mindestens 4 Byte für die ersten neun Stellen, also 8
Byte für DECIMAL(18, 9). Zusätzliche Stellen werden in einzelne Bytes
gepackt (normalerweise 2 Stellen pro Byte, 9 Stellen in 4 Byte).
Korrektur: In der Tabelle auf S. 931 kommt irrtümlich
zweimal die Option replicate-do-db vor. Beim zweiten Mal ist aber
tatsächlich replicate-ignore-db gemeint.
Letzte Änderung am 17.1.2008.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||