46 MySQL - Technische Referenz f¨ur Version 5.0.1-alpha
• DELETE FROM merge_table ohne WHERE l¨oscht nur die Zuordnung (das Mapping) f¨ur
die Tabelle, nicht alles in der zugeordneten (gemappten) Tabelle.
• Sie k¨onnen den Server nicht in ein anderes Verzeichnis bauen, wenn Sie MIT-Pthreads
verwenden. Weil dies
¨
Anderungen an MIT-Pthreads bedingen w¨urde, werden wir dieses
Problem wahrscheinlich nicht beheben.
• BLOB-Werte k¨onnen nicht “zuverl¨assig” in GROUP BY-, ORDER BY oder DISTINCT-
Klauseln benutzt werden. In diesen F¨allen werden bei Vergleichen nur die ersten
max_sort_length Bytes (Vorgabewert 1024) von BLOBs benutzt. Die Voreinstellung
kann mit der -O max_sort_length-Option f¨ur mysqld ge¨andert werden. In den
meisten F¨allen k¨onnen Sie als Workaround eine Teilzeichenkette (Substring)
verwenden: SELECT DISTINCT LEFT(blob,2048) FROM tabelle.
• Berechnungen werden mit BIGINT oder DOUBLE durchgef¨uhrt (beide sind normalerweise
64 Bits lang). Es h¨angt von der verwendeten Funktion ab, welche Genauigkeit man
erh¨alt. Als allgemeine Regel gilt, dass Bit-Funktionen mit BIGINT-Genauigkeit, IF und
ELT() mit BIGINT- oder DOUBLE-Genauigkeit und der Rest mit DOUBLE-Genauigkeit
durchgef¨uhrt werden. Man sollte vermeiden, vorzeichenlose Werte, die gr¨oßer als 63
Bits sind (9223372036854775807), zu verwenden, ausser f¨ur Bit-Felder! MySQL 4.0
bietet eine bessere BIGINT-Handhabung als MySQL 3.23.
• Bei allen Zeichenketten-Spalten ausser bei BLOB- und TEXT-Spalten werden Leerzeichen
am Ende automatisch entfernt, wenn sie a/jointfilesconvert/293675/bgerufen werden. Bei
CHAR
-Typen ist das
okay und kann gem¨aß ANSI-SQL92 als ein Feature betrachtet werden. Der Bug besteht
darin, dass in MySQL auch VARCHAR-Spalten auf dieselbe Art behandelt werden.
• Pro Tabelle k¨onnen h¨ochstens 255 ENUM- und SET-Spalten verwendet werden.
• safe_mysqld leitet alle Nachrichten von mysqld in die mysqld-Logdatei um. Ein Prob-
lem ergibt sich, wenn Sie mysqladmin refresh benutzen, um die Logdatei zu schließen
und wieder zu ¨offnen. In diesem Fall werden stdout und stderr immer noch in die
alte Logdatei geleitet. Wenn Sie --log umfangreich benutzen, sollten Sie safe_mysqld
editieren, um in ‘’hostname’.err’ anstelle von ‘’hostname’.log’ zu loggen, damit Sie
den Speicherplatz f¨ur das alte Log leicht neu belegen k¨onnen, indem Sie das alte Log
l¨oschen und mysqladmin refresh ausf¨uhren.
• Im UPDATE-Statement, werden Spalten von links nach rechts aktualisiert (Update).
Wenn Sie sich auf eine aktualisierte Spalte beziehen, erhalten Sie den aktualisierten
Werte anstelle des urspr¨unglichen Werts. Beispiel:
mysql> UPDATE tabelle SET KEY=KEY+1,KEY=KEY+1;
Dieses Statement aktualisiert KEY mit 2 anstelle von 1.
• Sie k¨onnen tempor¨are Tabellen nicht ¨ofter als einmal innerhalb derselbe Anfrage be-
nutzen. Das Folgende zum Beispiel funktioniert nicht:
select * from temporaere_tabelle, temporaere_tabelle as t2;
• RENAME funktioniert nicht bei TEMPORARY-Tabellen.
• Unter Umst¨anden behandelt der Optimierer (Optimizer) DISTINCT unterschiedlich, je
nachdem, ob Sie ’versteckte’ Spalten in einem Join benutzen oder nicht. In einem
Join werden versteckte Spalten als Teil des Ergebnisses gez¨ahlt (selbst wenn sie nicht
angezeigt werden), w¨ahrend versteckte Spalten in normalen Anfragen nicht an einem
DISTINCT-Vergleich teilnehmen. Zuk¨unftig werden wir dieses Verhalten wahrscheinlich
Comentarios a estos manuales