SHOW WARNINGS 显示了最后一个查询语句产生的错误、警告、提示等信息,如果它没有产生任何信息,则不显示任何信息。这个语句是在MySQL 4.1.0实现的。它的一个相关语句是 SHOW ERRORS,不过它只显示错误信息,详情请看“14.5.3.10SHOW ERRORS Syntax”。随着执行语句的不同每次显示的信息都会产生变化。 SHOW COUNT(*) WARNINGS 语句显示了错误、警告、提示信息的总记录数。也可以通过取得变量 warning_count 的值来获得总错误记录数:
SHOW COUNT(*) WARNINGS;
SELECT @@warning_count;
warning_count 的值可能会比 SHOW WARNINGS 显示的结果记录数大,因为系统变量 max_error_count 被设置的比较小,因此没有把所有的信息都存下来。本章节后面演示了发生这种情况的例子。 LIMIT 分句的用法和在 SELECT 语句一样。详情请看“14.1.7 SELECT Syntax”。 MySQL服务器把最后一次查询中产生的错误、警告、提示信息总数返回了。如果使用C API,这个值可以通过调用 mysql_warning_count() 得到。详情请看“21.2.3.58 mysql_warning_count()”。 注意,警告信息的框架在MySQL 4.1.0中增加了,在这个时候还有很多语句不产生警告信息。在4.1.1中,这种情况得到了改善,很多语句都产生了警告信息,例如:LOAD DATA INFILE 及 INSERT, UPDATE, CREATE TABLE, 和 ALTER TABLE 等。以下 DROP TABLE 语句就产生了一个提示信息:
mysql> DROP TABLE IF EXISTS no_such_table;
mysql> SHOW WARNINGS;
+-------+------+-------------------------------+
| Level | Code | Message |
+-------+------+-------------------------------+
| Note | 1051 | Unknown table 'no_such_table' |
+-------+------+-------------------------------+
以下是一个 CREATE TABLE 和 INSERT 语句产生的语法警告和转换警告信息:
mysql> CREATE TABLE t1 (a TINYINT NOT NULL, b CHAR(4)) TYPE=MyISAM;