MySQL - SHOW WARNINGS Statement

The MySQL SHOW WARNINGS Statement is used to retrieve the information about the error, warnings, and notes occurred during the execution of the previous MySQL statement in the current session.
Following is the syntax of the SHOW ERRORS Statement −
SHOW WARNINGS [LIMIT [offset,] row_count]
SHOW COUNT(*) WARNINGS

Let us create a table with name MyPlayers in MySQL database using CREATE statement as shown below −
mysql> CREATE TABLE MyPlayers(
   ID INT,
   First_Name VARCHAR(255) NOT NULL,
   Last_Name VARCHAR(255) NOT NULL,
   Date_Of_Birth date,
   Place_Of_Birth VARCHAR(15),
   Country VARCHAR(15),
   PRIMARY KEY (ID)
);
Query OK, 0 rows affected (3.88 sec)
Now, we will insert some records in MyPlayers table using INSERT statements −
mysql> insert into MyPlayers values(1, 'Shikhar', 'Dhawan', DATE('1981-12-05'), 'Delhi', 'India');
Query OK, 1 row affected (0.57 sec)

mysql> insert into MyPlayers values(2, 'Jonathan', 'Trott', DATE('1981-04-22'), 'CapeTown', 'SouthAfrica');
Query OK, 1 row affected (0.37 sec)
If verify the contents of the MyPlayers table, you can observe the created records as −
mysql> select * from MyPlayers;
+----+------------+------------+---------------+----------------+-------------+
| ID | First_Name | Last_Name  | Date_Of_Birth | Place_Of_Birth | Country     |
+----+------------+------------+---------------+----------------+-------------+
| 1  | Shikhar    | Dhawan     | 1981-12-05    | Delhi          | India       |
| 2  | Jonathan   | Trott      | 1981-04-22    | CapeTown       | SouthAfrica |
+----+------------+------------+---------------+----------------+-------------+
2 rows in set (0.07 sec)
NOTE − Make sure you disable the strict SQL mode or use the INSERT IGNORE statement to display the errors as warnings.
Now, let us try to insert more rows with repeated ID value, wrong table name and wrong number of values −
mysql> insert ignore into MyPlayers values(2, NULL, 'Sharma', DATE('1987-04-30'), 'Nagpur', 'India');
Query OK, 0 rows affected, 2 warnings (0.00 sec)
Following query retrieves the warnings generated by the above statement −
mysql> SHOW WARNINGS;
+---------+------+-------------------------------------------------+
| Level   | Code | Message                                         |
+---------+------+-------------------------------------------------+
| Warning | 1048 | Column 'First_Name' cannot be null              |
| Warning | 1062 | Duplicate entry '2' for key 'myplayers.PRIMARY' |
+---------+------+-------------------------------------------------+
2 rows in set (0.00 sec)
You can limit the number of errors to an offset using the LIMIT clause −
Following INSERT statement tries to insert a record into the table MyPlayers −
mysql> insert ignore into MyPlayers values(1, NULL, 'Sangakkara', '1977-10-27', 'Long Name For Place Of Birth', 'Long Name For Country');
Query OK, 0 rows affected, 4 warnings (0.08 sec)
Following statement displays the warnings generated by the above statement −
mysql> SHOW WARNINGS;
+---------+------+-----------------------------------------------------+
| Level   | Code | Message                                             |
+---------+------+-----------------------------------------------------+
| Warning | 1048 | Column 'First_Name' cannot be null                  |
| Warning | 1265 | Data truncated for column 'Place_Of_Birth' at row 1 |
| Warning | 1265 | Data truncated for column 'Country' at row 1        |
| Warning | 1062 | Duplicate entry '1' for key 'myplayers.PRIMARY'     |
+---------+------+-----------------------------------------------------+
4 rows in set (0.00 sec)
You can limit the warnings using the LIMIT statement as follows −
mysql> SHOW WARNINGS LIMIT 2;
+---------+------+-----------------------------------------------------+
| Level   | Code | Message                                             |
+---------+------+-----------------------------------------------------+
| Warning | 1048 | Column 'First_Name' cannot be null                  |
| Warning | 1265 | Data truncated for column 'Place_Of_Birth' at row 1 |
+---------+------+-----------------------------------------------------+
2 rows in set (0.00 sec)
You can count the number of errors you can use the COUNT(*) or the @@error_count; variable.
Following query tries to insert a record in the above created MyPlayers table.
mysql> insert ignore into MyPlayers values(1, NULL, NULL, DATE('1977-10-27'), 'Matale', 'Long Name For Country');
Query OK, 0 rows affected, 4 warnings (0.00 sec)
You can get the number of errors generated by the above statement using the SHOW ERRORS query as follows −
mysql> SHOW COUNT(*) WARNINGS;
+-------------------------+
| @@session.warning_count |
+-------------------------+
| 4                       |
+-------------------------+
1 row in set (0.00 sec)

    31 Lectures 
     6 hours 

 Eduonix Learning Solutions

    84 Lectures 
     5.5 hours 

 Frahaan Hussain

    6 Lectures 
     3.5 hours 

 DATAhill Solutions Srinivas Reddy

    60 Lectures 
     10 hours 

 Vijay Kumar Parvatha Reddy

    10 Lectures 
     1 hours 

 Harshit Srivastava

    25 Lectures 
     4 hours 

 Trevoir Williams
 Print
 Add Notes
 Bookmark this page