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

Seite Thema Details
Probleme mit mylibrary

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:

mysqladmin -u root -p create mylibrary
mysql -u root -p --default-characterset=latin1 mylibrary < mylibrary.sql

Probleme mit spadmin

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.

218 FLOAT und DOUBLE

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.

218-219 DECIMAL

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).

262 UNIQUE versus PRIMARY KEY

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.

453-490 SPs und Trigger

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.

467, 484-486 Rekursion in SPs

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.

471 IF-Syntax

Erratum: Die korrekte Syntax lautet ELSEIF, nicht ELSE IF.

487 Trigger

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.

837 FLOAT und DOUBLE

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.

837 DECIMAL

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).

931 mysqld Optionen

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.


Home
Bitte entschuldigen Sie die Fehler! Ganz herzlichen Dank an alle Leser, die mich auf die Ungenauigkeiten/Fehler aufmerksam gemacht haben!

Letzte Änderung am 17.1.2008.

Zurück zur Buchseite