SHOW WARNINGS [LIMIT [offset
,]row_count
] SHOW COUNT(*) WARNINGS
SHOW WARNINGS
zeigt die Fehler-, Warnungs-
und Hinweismeldungen, die durch die zuletzt abgesetzte
Anweisung ausgegeben wurden. Hat diese Anweisung keine
Meldungen erzeugt, so ist die Ausgabe leer. Die verwandte
Anweisung SHOW ERRORS
zeigt nur die Fehler
an. Siehe auch Abschnitt 13.5.4.10, „SHOW ERRORS
“.
Die Liste der Meldungen wird bei jeder neuen Anweisung, die eine Tabelle verwendet, zurückgesetzt.
Die SHOW COUNT(*) WARNINGS
-Anweisung zeigt
die Gesamtanzahl der Fehler, Warnungen und Hinweise an. Sie
können diese Anzahl auch der Variablen
warning_count
entnehmen:
SHOW COUNT(*) WARNINGS; SELECT @@warning_count;
Der Wert von warning_count
kann größer
sein als die Anzahl der von SHOW WARNINGS
angezeigten Meldungen. Dies liegt dann daran, dass die
Systemvariable max_error_count
so niedrig
angesetzt ist, dass nicht alle Meldungen gespeichert werden.
Ein weiter unten in diesem Anschnitt gezeigtes Beispiel
veranschaulicht, wie dies geschehen kann.
Die LIMIT
-Klausel hat dieselbe Syntax wie
bei der SELECT
-Anweisung. Siehe auch
Abschnitt 13.2.7, „SELECT
“.
Der MySQL Server sendet die Gesamtanzahl der Fehler, Warnungen
und Hinweise zurück, die aufgrund der letzten Anweisung
erzeugt wurden. Wenn Sie die C-API verwenden, lässt sich
dieser Wert durch einen Aufruf von
mysql_warning_count()
ermitteln. Siehe auch
Abschnitt 24.2.3.69, „mysql_warning_count()
“.
Warnungen werden für Anweisungen wie LOAD DATA
INFILE
und DML-Anweisungen wie
INSERT
, UPDATE
,
CREATE TABLE
und ALTER
TABLE
erzeugt.
Die folgende DROP TABLE
-Anweisung erzeugt
einen Hinweis:
mysql>DROP TABLE IF EXISTS no_such_table;
mysql>SHOW WARNINGS;
+-------+------+-------------------------------+ | Level | Code | Message | +-------+------+-------------------------------+ | Note | 1051 | Unknown table 'no_such_table' | +-------+------+-------------------------------+
Es folgt ein einfaches Beispiel, das eine Syntaxwarnung für
CREATE TABLE
und Konvertierungswarnungen
für INSERT
enthält:
mysql>CREATE TABLE t1 (a TINYINT NOT NULL, b CHAR(4)) TYPE=MyISAM;
Query OK, 0 rows affected, 1 warning (0.00 sec) mysql>SHOW WARNINGS\G
*************************** 1. row *************************** Level: Warning Code: 1287 Message: 'TYPE=storage_engine' is deprecated, use 'ENGINE=storage_engine' instead 1 row in set (0.00 sec) mysql>INSERT INTO t1 VALUES(10,'mysql'),(NULL,'test'),
->(300,'Open Source');
Query OK, 3 rows affected, 4 warnings (0.01 sec) Records: 3 Duplicates: 0 Warnings: 4 mysql>SHOW WARNINGS\G
*************************** 1. row *************************** Level: Warning Code: 1265 Message: Data truncated for column 'b' at row 1 *************************** 2. row *************************** Level: Warning Code: 1263 Message: Data truncated, NULL supplied to NOT NULL column 'a' at row 2 *************************** 3. row *************************** Level: Warning Code: 1264 Message: Data truncated, out of range for column 'a' at row 3 *************************** 4. row *************************** Level: Warning Code: 1265 Message: Data truncated for column 'b' at row 3 4 rows in set (0.00 sec)
Die maximale Anzahl zu speichernder Fehler-, Warn- und
Hinweismeldungen wird von der Systemvariablen
max_error_count
gesteuert. Der Standardwert
ist 64. Um die Anzahl der Meldungen, die Sie speichern wollen,
zu ändern, modifizieren Sie den Wert von
max_error_count
. Im folgenden Beispiel
erzeugt die ALTER TABLE
-Anweisung drei
Warnmeldungen, von denen aber nur eine gespeichert wird, weil
max_error_count
zuvor auf 1 gesetzt worden
war:
mysql>SHOW VARIABLES LIKE 'max_error_count';
+-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | max_error_count | 64 | +-----------------+-------+ 1 row in set (0.00 sec) mysql>SET max_error_count=1;
Query OK, 0 rows affected (0.00 sec) mysql>ALTER TABLE t1 MODIFY b CHAR;
Query OK, 3 rows affected, 3 warnings (0.00 sec) Records: 3 Duplicates: 0 Warnings: 3 mysql>SELECT @@warning_count;
+-----------------+ | @@warning_count | +-----------------+ | 3 | +-----------------+ 1 row in set (0.01 sec) mysql>SHOW WARNINGS;
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1263 | Data truncated for column 'b' at row 1 | +---------+------+----------------------------------------+ 1 row in set (0.00 sec)
Um Warnungen zu deaktivieren, setzen Sie
max_error_count
auf 0. In diesem Fall zeigt
warning_count
zwar noch an, wie viele
Warnungen aufgetreten sind, aber keine dieser Meldungen wird
gespeichert.
Sie können die Sitzungsvariable SQL_NOTES
auf 0 setzen, damit Warnungen auf der
Note
-Ebene nicht aufgezeichnet werden.
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.