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
廣告