Spec-Zone .ru
спецификации, руководства, описания, API
|
SHOW WARNINGS [LIMIT [offset
,]row_count
]SHOW COUNT(*) WARNINGS
SHOW WARNINGS
информация о шоу об условиях (ошибки, предупреждения, и
примечания), который следовал из последнего оператора в текущем сеансе, который генерировал сообщения. Это
ничего не показывает, если последний оператор, используемый таблица и, не генерировал сообщений. (Таким образом,
оператор, который использует таблицу, но не генерирует сообщений, очищает список сообщения.) Операторы, которые
не используют таблицы и не генерировать сообщения, не имеют никакого эффекта на список сообщения.
Предупреждения сгенерированы для операторов DML такой как INSERT
, UPDATE
,
и LOAD DATA INFILE
так же как операторы DDL такой как CREATE TABLE
и ALTER
TABLE
.
SHOW WARNINGS
также используется после EXPLAIN EXTENDED
, вывести на экран дополнительную информацию, сгенерированную EXPLAIN
когда EXTENDED
ключевое слово используется.
См. Раздел
8.8.3,"EXPLAIN EXTENDED
Выходной Формат".
LIMIT
у пункта есть тот же самый синтаксис что касается SELECT
оператор. См. Раздел 13.2.9,"SELECT
Синтаксис".
Связанный оператор, SHOW ERRORS
, шоу
только состояния ошибки (это исключает предупреждения и примечания). См. Раздел
13.7.5.16,"SHOW ERRORS
Синтаксис". GET DIAGNOSTICS
может использоваться, чтобы исследовать информацию на
отдельные условия. См. Раздел 13.6.7.3,"GET
DIAGNOSTICS
Синтаксис".
SHOW COUNT(*) WARNINGS
оператор выводит на экран общее количество ошибок,
предупреждений, и примечаний. Можно также получить это число от warning_count
системная переменная:
SHOW COUNT(*) WARNINGS;SELECT @@warning_count;
Вот простой пример, который показывает предупреждение синтаксиса для CREATE TABLE
и предупреждения преобразования для 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: 1287Message: 'TYPE=storage_engine' is deprecated, use 'ENGINE=storage_engine' instead1 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: 4mysql>SHOW WARNINGS\G
*************************** 1. row *************************** Level: Warning Code: 1265Message: Data truncated for column 'b' at row 1*************************** 2. row *************************** Level: Warning Code: 1263Message: Data truncated, NULL supplied to NOT NULL column 'a' at row 2*************************** 3. row *************************** Level: Warning Code: 1264Message: Data truncated, out of range for column 'a' at row 3*************************** 4. row *************************** Level: Warning Code: 1265Message: Data truncated for column 'b' at row 34 rows in set (0.00 sec)
max_error_count
системная переменная управляет максимальным количеством ошибки,
предупреждения, и сообщений примечания, для которых сервер хранит информацию, и таким образом число сообщений
это SHOW WARNINGS
дисплеи. По умолчанию, max_error_count
64. Чтобы изменить число сообщений, сервер может сохранить,
изменить значение max_error_count
.
Значение warning_count
не ограничивается max_error_count
если число сгенерированных сообщений превышает max_error_count
.
В следующем примере, ALTER TABLE
оператор производит три предупреждающих сообщения (как показано
значением warning_count
),
но только один сохранен потому что 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: 3mysql>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)
Чтобы отключить предупреждения, установить max_error_count
к 0. В этом случае, warning_count
все еще указывает, сколько предупреждений произошло, но ни одно из
сообщений не хранится.
Следующий DROP TABLE
оператор приводит к примечанию:
mysql>DROP TABLE IF EXISTS test.no_such_table;
Query OK, 0 rows affected, 1 warning (0.01 sec)mysql>SHOW WARNINGS;
+-------+------+------------------------------------+| Level | Code | Message |+-------+------+------------------------------------+| Note | 1051 | Unknown table 'test.no_such_table' |+-------+------+------------------------------------+
Если sql_notes
системная переменная устанавливается в 0, примечания не постепенно
увеличиваются warning_count
и сервер не записывает их.
Сервер MySQL отсылает назад количество, указывающее на общее количество ошибок, предупреждений, и примечаний,
следующих из последнего оператора. От API C это значение может быть получено, вызывая mysql_warning_count()
. См. Раздел
21.8.7.73,"mysql_warning_count()
".