MySQL - SHOW ERRORS Statement

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

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)
Now, let us try to insert more rows with repeated ID value, wrong table name and wrong number of values −
mysql> insert into MyPlayers values(2, 'Rohit', 'Sharma', DATE('1987-04-30'), 'Nagpur', 'India');
ERROR 1062 (23000): Duplicate entry '2' for key 'myplayers.PRIMARY'
Following query retrieves the state and message of the above generated error −
mysql> SHOW ERRORS;
+-------+------+-------------------------------------------------+
| Level | Code | Message                                         |
+-------+------+-------------------------------------------------+
| Error | 1136 | Column count doesn't match value count at row 1 |
+-------+------+-------------------------------------------------+
1 row in set (0.00 sec)
Following are two more insert statements that generates errors −
mysql> insert into WrongTable values(3, 'Kumara', 'Sangakkara', DATE('1977-10-27'), 'Matale', 'Srilanka');
ERROR 1146 (42S02): Table 'demo.wrongtable' doesn't exist
mysql> SHOW ERRORS;
+-------+------+---------------------------------------+
| Level | Code | Message                               |
+-------+------+---------------------------------------+
| Error | 1146 | Table 'demo.wrongtable' doesn't exist |
+-------+------+---------------------------------------+
1 row in set (0.00 sec)

mysql> insert into MyPlayers values('Virat', 'Kohli', DATE('1988-11-05'), 'Delhi', 'India');
ERROR 1136 (21S01): Column count doesn't match value count at row 1

mysql> SHOW ERRORS;
+-------+------+-------------------------------------------------+
| Level | Code | Message                                         |
+-------+------+-------------------------------------------------+
| Error | 1136 | Column count doesn't match value count at row 1 |
+-------+------+-------------------------------------------------+
1 row in set (0.00 sec)
You can limit the number of errors to an offset using the LIMIT clause −
mysql> insert into MyPlayers values(3, 'Kumara', 'Sangakkara', DATE('1977-10-27'), 'Matale', 'Long Name For Country');
ERROR 1406 (22001): Data too long for column 'Country' at row 1
mysql> SHOW ERRORS LIMIT 0;
Empty set (0.00 sec)

mysql> SHOW ERRORS LIMIT 1;
+-------+------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
| Level | Code | Message                                                                                                                                                   |
+-------+------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
| Error | 1064 | You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LINIT 0' at line 1 |
+-------+------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row 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 into MyPlayers values(3, 'Kumara', 'Sangakkara', DATE('1977-10-27'), 'Matale', 'Long Name For Country');
ERROR 1406 (22001): Data too long for column 'Country' at row 1
You can get the number of errors generated by the above statement using the SHOW ERRORS query as follows −
mysql> SHOW COUNT(*) ERRORS;
+-----------------------+
| @@session.error_count |
+-----------------------+
| 1                     |
+-----------------------+
1 row in set (0.00 sec)
We can also use the error_count variable for the same purpose as −
mysql> SELECT @@error_count;
+---------------+
| @@error_count |
+---------------+
| 1             |
+---------------+
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