Spec-Zone.ru › MariaDB

ПОКАЗАТЬ ПРЕДУПРЕЖДЕНИЯ

Синтаксис

SHOW WARNINGS [LIMIT [offset,] row_count]
SHOW ERRORS [LIMIT row_count OFFSET offset]
SHOW COUNT(*) WARNINGS

Описание

SHOW WARNINGS отображает сообщения об ошибках, предупреждениях и заметках, которые были получены в результате последнего оператора, сгенерировавшего сообщения в текущем сеансе. Он ничего не отображает, если последний оператор использовал таблицу и не сгенерировал сообщений. (То есть оператор, который использует таблицу, но не генерирует сообщения, очищает список сообщений.) Операторы, которые не используют таблицы и не генерируют сообщения, не влияют на список сообщений.

Заметка отличается от предупреждения тем, что она отображается только если переменная sql_notes установлена в 1 (по умолчанию) и не преобразуется в ошибку, если strict mode включено.

Сопутствующий оператор, SHOW ERRORS, отображает только ошибки.

Оператор SHOW COUNT(*) WARNINGS отображает общее количество ошибок, предупреждений и заметок. Вы также можете получить это число из переменной warning_count:

SHOW COUNT(*) WARNINGS;
SELECT @@warning_count;

Значение warning_count может быть больше, чем количество сообщений, отображаемых SHOW WARNINGS, если переменная системы max_error_count установлена настолько низко, что не все сообщения сохраняются.

Оператор LIMIT имеет такой же синтаксис, как и SELECT statement.

SHOW WARNINGS может быть использован после EXPLAIN EXTENDED для просмотра того, как запрос переписывается MariaDB внутри.

Если переменная сервера sql_notes установлена в 1, заметки включены в вывод SHOW WARNINGS; если она установлена в 0, этот оператор не будет отображать (или подсчитывать) заметки.

Результаты SHOW WARNINGS и SHOW COUNT(*) WARNINGS напрямую отправляются клиенту. Если вам нужно получить доступ к этой информации в хранимой процедуре, вы можете использовать оператор GET DIAGNOSTICS вместо этого.

Список кодов ошибок MariaDB см. в Кодах ошибок MariaDB.

Клиентский интерфейс mariadb также имеет ряд опций, связанных с предупреждениями. Команда \W будет показывать предупреждения после каждого оператора, а \w — отключит это. Запуск клиента с опцией --show-warnings будет показывать предупреждения после каждого оператора.

MariaDB реализует стек отслеживания ошибок хранимой процедуры. SHOW WARNINGS также может использоваться для отображения дополнительной информации. См. пример ниже.

Примеры

SELECT 1/0;
+------+
| 1/0  |
+------+
| NULL |
+------+

SHOW COUNT(*) WARNINGS;
+-------------------------+
| @@session.warning_count |
+-------------------------+
|                       1 |
+-------------------------+

SHOW WARNINGS;
+---------+------+---------------+
| Level   | Code | Message       |
+---------+------+---------------+
| Warning | 1365 | Division by 0 |
+---------+------+---------------+

Стек отслеживания

Отображение стека отслеживания:

DELIMITER $$
CREATE OR REPLACE PROCEDURE p1()
  BEGIN
    DECLARE c CURSOR FOR SELECT * FROM not_existing;
    OPEN c;
    CLOSE c;
  END;
$$
CREATE OR REPLACE PROCEDURE p2()
  BEGIN
    CALL p1;
  END;
$$
DELIMITER ;
CALL p2;
ERROR 1146 (42S02): Table 'test.not_existing' doesn't exist

SHOW WARNINGS;
+-------+------+-----------------------------------------+
| Level | Code | Message                                 |
+-------+------+-----------------------------------------+
| Error | 1146 | Table 'test.not_existing' doesn't exist |
| Note  | 4091 | At line 6 in test.p1                    |
| Note  | 4091 | At line 4 in test.p2                    |
+-------+------+-----------------------------------------+

SHOW WARNINGS отображает стек отслеживания, показывая, где фактически произошла ошибка:

  • Строка 4 в test.p1 — команда OPEN, которая фактически вызвала ошибку
  • Строка 3 в test.p2 — оператор CALL, вызывающий p1 из p2.

См. также

  • ПОКАЗАТЬ ОШИБКИ
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется заранее MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/show-warnings/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API