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 查询产生以下输出:

级别 代码 消息
错误 1136 第 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;

执行上述查询后,它会生成如下所示的输出:

级别 代码 消息
错误 1146 表“demo.wrongtable”不存在
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;

此查询将生成以下输出:

级别 代码 消息
错误 1136 第 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;

以下是上述查询的输出:

级别 代码 消息
错误 1064 您的 SQL 语法有误;请查阅与您的 MySQL 服务器版本相对应的参考手册,以了解正确的语法在第 1 行附近使用 LINIT 0

错误计数

您可以计算错误的数量,您可以使用 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
广告

© . All rights reserved.