ПОКАЗАТЬ ПРЕДУПРЕЖДЕНИЯ
Синтаксис
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.
См. также
© 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/