SHOW WARNINGS [LIMIT [offset
,]row_count
] SHOW COUNT(*) WARNINGS
SHOW WARNINGS
muestra los mensajes de
error, advertencia y notas retornadas por el último comando
que haya generado algún mensaje, o nada si el último mensaje
que haya usado una tabla no haya generado mensajes. Un comando
relacionado, SHOW ERRORS
, sólo muestra los
errores. Consulte Sección 13.5.4.9, “Sintaxis de SHOW ERRORS
”.
La lista de mensajes se resetea para cada nuevo comando que use una tabla.
El comando SHOW COUNT(*) WARNINGS
muestra
el número total de errores, advertencias y notas. Puede
recibir este número de la variable
warning_count
:
SHOW COUNT(*) WARNINGS; SELECT @@warning_count;
El valor de warning_count
puede ser mayor
que el número de mensajes mostrados por SHOW
WARNINGS
si la variable de sistema
max_error_count
tiene un valor tan pequeño
que no se almacenen todos los mensajes. Se muestra
posteriormente un ejemplo de cómo puede pasar esto.
La cláusula LIMIT
tiene la misma sintaxis
que para el comando SELECT
. Consulte
Sección 13.2.7, “Sintaxis de SELECT
”.
El servidor MySQL devuelve el número total de errores,
advertencias, y notas que hayan resultado desde el último
comando. Si usa la API de C, este valor puede obtenerse
llamando a mysql_warning_count()
. Consulte
Sección 24.2.3.63, “mysql_warning_count()
”.
Las advertencias se generan para comandos tales como
LOAD DATA INFILE
y comandos DML tales como
INSERT
, UPDATE
,
CREATE TABLE
, y ALTER
TABLE
.
El siguiente comando DROP TABLE
provoca una
nota:
mysql> DROP TABLE IF EXISTS no_such_table; mysql> SHOW WARNINGS; +-------+------+-------------------------------+ | Level | Code | Message | +-------+------+-------------------------------+ | Note | 1051 | Unknown table 'no_such_table' | +-------+------+-------------------------------+
Aquí hay un ejemplo simple que muesta una advertencia de
sintaxis para CREATE TABLE
y advertencias
de conversiones para INSERT
:
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)
El máximo número de errores, advertencias y notas a
almacenar se controla mediante la variable de sistema
max_error_count
. Por defecto, su valor es
64. Para cambiar el número de mensajes que quiere almacenar,
cambie el valor de max_error_count
. En el
siguiente ejemplo, el comando ALTER TABLE
produce tres mensajes de advertencia, pero sólo se almacena
uno porque max_error_count
vale 1:
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)
Para deshabilitar las advertencias, ponga
max_error_count
a 0. En este caso,
warning_count
indica cuántas advertencias
ocurren, pero ninguno de los mensajes se almacenan.
Desde MySQL 5.0.3, puede poner la variable de sesión
SQL_NOTES
a 0 para que las advertencias del
nivel Note
no se guarden.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.