Syntax
------

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

Description
-----------

SHOW WARNINGS shows the error, warning, and note messages that resulted from
the last statement that generated messages in the current session. It shows
nothing if the last statement used a table and generated no messages. (That
is, a statement that uses a table but generates no messages clears the message
list.) Statements that do not use tables and do not generate messages have no
effect on the message list.

A note is different to a warning in that it only appears if the sql_notes
variable is set to 1 (the default), and is not converted to an error if strict
mode is enabled.

A related statement, SHOW ERRORS, shows only the errors.

The SHOW COUNT(*) WARNINGS statement displays the total number of errors,
warnings, and notes. You can also retrieve this number from the warning_count
variable:

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

The value of warning_count might be greater than the number of messages
displayed by SHOW WARNINGS if the max_error_count system variable is set so
low that not all messages are stored.

The LIMIT clause has the same syntax as for the SELECT statement.

SHOW WARNINGS can be used after EXPLAIN EXTENDED to see how a query is
internally rewritten by MariaDB.

If the sql_notes server variable is set to 1, Notes are included in the output
of SHOW WARNINGS; if it is set to 0, this statement will not show (or count)
Notes.

The results of SHOW WARNINGS and SHOW COUNT(*) WARNINGS are directly sent to
the client. If you need to access those information in a stored program, you
can use the GET DIAGNOSTICS statement instead.

For a list of MariaDB error codes, see MariaDB Error Codes.

The mysql client also has a number of options related to warnings. The \W
command will show warnings after every statement, while \w will disable this.
Starting the client with the --show-warnings option will show warnings after
every statement.

MariaDB 10.3.1 implements a stored routine error stack trace. SHOW WARNINGS
can also be used to show more information. See the example below.

Examples
--------

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

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

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

Stack Trace
-----------

From MariaDB 10.3.1, displaying a stack trace:

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 displays a stack trace, showing where the error actually
happened:

* Line 4 in test.p1 is the OPEN command which actually raised the error
* Line 3 in test.p2 is the CALL statement, calling p1 from p2.

URL: https://mariadb.com/kb/en/show-warnings/