Spec-Zone .ru
спецификации, руководства, описания, API

13.7.5.41. SHOW WARNINGS Синтаксис

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.18,"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(). См. Раздел 22.8.7.73,"mysql_warning_count()".