mysql set 语法_SET 和 SHOW语法(四)

SHOW WARNINGS [LIMIT [offset,] row_count]

SHOW COUNT(*) WARNINGS

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 default charset utf8 ;

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> SHOW WARNINGS\G

*************************** 1. row ***************************

Level: Warning

Code: 1287

Message: 'TYPE=storage_engine' is deprecated, use

'ENGINE=storage_engine' instead

1 row in set (0.00 sec)

mysql> INSERT INTO t1 VALUES(10,'mysql'),(NULL,'test'),

-> (300,'open source');

Query OK, 3 rows affected, 4 warnings (0.01 sec)

Records: 3 Duplicates: 0 Warnings: 4

mysql> SHOW WARNINGS\G

*************************** 1. row ***************************

Level: Warning

Code: 1265

Message: Data truncated for column 'b' at row 1

*************************** 2. row ***************************

Level: Warning

Code: 1263

Message: Data truncated, NULL supplied to NOT NULL column 'a' at row 2

*************************** 3. row ***************************

Level: Warning

Code: 1264

Message: Data truncated, out of range for column 'a' at row 3

*************************** 4. row ***************************

Level: Warning

Code: 1265

Message: Data truncated for column 'b' at row 3

4 rows in set (0.00 sec)

错误、警告、提示信息的最大存储数量是由系统变量 max_error_count 控制的。它的默认值是64,通过修改 max_error_count 的值就可以改变最大存储数量。以下例子中,ALTER TABLE 语句产生了3个警告信息,不过只存储了1条,因为 max_error_count 的值为 1:

mysql> SHOW VARIABLES LIKE 'max_error_count';

+-----------------+-------+

| Variable_name | Value |

+-----------------+-------+

| max_error_count | 64 |

+-----------------+-------+

1 row in set (0.00 sec)

mysql> SET max_error_count=1;

Query OK, 0 rows affected (0.00 sec)

mysql> ALTER TABLE t1 MODIFY b CHAR;

Query OK, 3 rows affected, 3 warnings (0.00 sec)

Records: 3 Duplicates: 0 Warnings: 3

mysql> SELECT @@warning_count;

+-----------------+

| @@warning_count |

+-----------------+

| 3 |

+-----------------+

1 row in set (0.01 sec)

mysql> SHOW WARNINGS;

+---------+------+----------------------------------------+

| Level | Code | Message |

+---------+------+----------------------------------------+

| Warning | 1263 | Data truncated for column 'b' at row 1 |

+---------+------+----------------------------------------+

1 row in set (0.00 sec)

想要禁止警告信息,只要将 max_error_count 设置为 0。在这种情况下,warning_count 仍然是产生的警告信息总数,但不存储任何警告信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值