SHOW WARNINGS [LIMIT row_count] SHOW ERRORS [LIMIT row_count]
Este comando é implementado no MySQL 4.1.0.
Ele mostra os erros,a visos e notas recebidos para o último comando. Os erros/avisos são reiniciados para cada comando que utiliza uma tabela.
O servidor MySQL envia de volta o número total de avisos e
erros que você recebe para o último comando; Isto pode ser
retornado chamando mysql_warning_count()
.
Até as mensagens max_error_count
são
armazenadas (variáveis global e específicas da thread).
Você pode recuperar o número de erros de
@error_count
e avisos de
@warning_count
.
SHOW WARNINGS
mostra todos os erros, avisos
e notas que você recebeu para o último comando enquanto
SHOW ERRORS
lhe mostra apenas o erro.
mysql>DROP TABLE IF EXISTS no_such_table;
mysql>SHOW WARNINGS;
+-------+------+-------------------------------+ | Level | Code | Message | +-------+------+-------------------------------+ | Note | 1051 | Unknown table 'no_such_table' | +-------+------+-------------------------------+
Note que no MySQL 4.1.0 apenas adicionamos a estrutura para
avisos e poucos comandos MySQL ainda geraram avisos. A versão
4.1.1 suporta todos os tipos de avisos para LOAD DATA
INFILE
e instruções DML tais como os comandos
INSERT
, UPDATE
e
ALTER
.
Por exemplo, aqui está um caso simple que produz avisos de conversão para instruções de inserção.
mysql>create table t1(a tinyint NOT NULL, b char(4));
Query OK, 0 rows affected (0.00 sec) mysql>insert into t1 values(10,'mysql'),(NULL,'test'),(300,'open source');
Query OK, 3 rows affected, 4 warnings (0.15 sec) Records: 3 Duplicates: 0 Warnings: 4 mysql>show warnings;
+---------+------+---------------------------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------------------------+ | Warning | 1263 | Data truncated for column 'b' at row 1 | | Warning | 1261 | Data truncated, NULL supplied to NOT NULL column 'a' at row 2 | | Warning | 1262 | Data truncated, out of range for column 'a' at row 3 | | Warning | 1263 | Data truncated for column 'b' at row 3 | +---------+------+---------------------------------------------------------------+ 4 rows in set (0.00 sec)
O número máximo de avisos pode ser específicado usando a
variável do servidor 'max_error_count'
,
SET max_error_count=[count]
; Por padrão é
64. No caso de avisos desabilitados, simplesmente zere esta
variável. No caso de max_error_count
ser
0, então o contador de avisos ainda representa quantos avisos
ocorreram, mas nenhuma das mensagens são armazenadas.
Por exemplo, considere o seguinte instrução de tabela
ALTER
para o exemplo acima, o qual retorna
apenas um mensagem de aviso embora o total de avisos seja 3,
ao definir max_error_count=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>show warnings;
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1263 | Data truncated for column 'b' at row 1 | +---------+------+----------------------------------------+ 1 row in set (0.00 sec) mysql>
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.