MySQL - SHOW ERRORS 语句
MySQL SHOW ERRORS 语句
MySQL SHOW ERRORS 语句用于检索当前会话中执行上一个 MySQL 语句时发生的错误信息。
语法
以下是 SHOW ERRORS 语句的语法 -
SHOW ERRORS [LIMIT [offset,] row_count] SHOW COUNT(*) ERRORS
示例
让我们使用 CREATE 语句在 MySQL 数据库中创建一个名为 MyPlayers 的表,如下所示 -
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) );
现在,我们将使用 INSERT 语句在 MyPlayers 表中插入一些记录 -
Insert into MyPlayers values (1, 'Shikhar', 'Dhawan', DATE('1981-12-05'), 'Delhi', 'India'), (2, 'Jonathan', 'Trott', DATE('1981-04-22'), 'CapeTown', 'SouthAfrica');
如果验证 MyPlayers 表的内容,您可以观察到创建的记录如下 -
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 |
现在,让我们尝试插入更多具有重复 ID 值、错误表名和错误值数量的行 -
Insert into MyPlayers values(2, 'Rohit', 'Sharma', DATE('1987-04-30'), 'Nagpur', 'India'); ERROR 1062 (23000): Duplicate entry '2' for key 'myplayers.PRIMARY'
以下查询检索上述生成的错误的状态和消息 -
SHOW ERRORS;
上述 mysql 查询产生以下输出 -
Level | Code | Message |
---|---|---|
Error | 1136 | Column count doesn't match value count at row 1 |
以下是另外两个会产生错误的插入语句 -
Insert into WrongTable values(3, 'Kumara', 'Sangakkara', DATE('1977-10-27'), 'Matale', 'Srilanka'); ERROR 1146 (42S02): Table 'demo.wrongtable' doesn't exist
以下查询检索上述生成的错误的状态和消息 -
SHOW ERRORS;
执行上述查询后,它将生成如下所示的输出 -
Level | Code | Message |
---|---|---|
Error | 1146 | Table 'demo.wrongtable' doesn't exist |
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
以下查询检索上述生成的错误的状态和消息 -
SHOW ERRORS;
此查询将生成如下所示的输出 -
Level | Code | Message |
---|---|---|
Error | 1136 | Column count doesn't match value count at row 1 |
LIMIT
您可以使用 LIMIT 子句将错误数量限制为偏移量 -
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
让我们使用 LIMIT 子句来限制错误数量:
SHOW ERRORS LIMIT 0; Empty set (0.00 sec)
现在,让我们使用 LIMIT 子句将错误数量限制为 1 -
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 |
计数错误
您可以使用 COUNT(*) 或 @@error_count; 变量来计算错误数量。
示例
以下查询尝试在上面创建的 MyPlayers 表中插入一条记录。
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
您可以使用 SHOW ERRORS 查询获取上述语句生成的错误数量,如下所示 -
SHOW COUNT(*) ERRORS;
输出
执行上述查询后,将生成如下所示的输出 -
@@session.error_count |
---|
1 |
我们也可以使用 error_count 变量来实现与 -
相同的目的SELECT @@error_count;
输出
查询执行后,将产生如下所示的输出 -
@@error_count |
---|
1 |