MYSQL-查看系统变量信息语法(四十)

server/2024/12/2 13:59:54/
13.7.5.40 SHOW WARNINGS 语句
SHOW WARNINGS [LIMIT [offset,] row_count]
SHOW COUNT(*) WARNINGS

SHOW WARNINGS是一个诊断语句,显示有关在当前会话中执行语句所导致的情况(错误、警告和注释)的信息。DML语句(如INSERTUPDATELOAD DATA)以及DDL语句(如CREATE TABLEALTER TABLE)都会生成警告。

LIMIT子句的语法与SELECT语句的语法相同。参见第 13.2.9 节“ SELECT 语句”。

SHOW WARNINGS 也被使用 在 EXPLAIN 后面显示 由 EXPLAIN 生成的扩展信息。参见第 8.8.3 节 “扩展的 EXPLAIN 输出格式”。

SHOW WARNINGS 显示有关当前会话中执行最新非诊断语句所导致的条件的信息。如果最近的语句在解析过程中导致错误,则无论语句类型如何(诊断或非诊断),SHOW WARNINGS都会显示结果条件。

SHOW COUNT(*)WARNINGS诊断语句显示错误、警告和注释的总数。您还可以从warning_count系统变量中检索此数字:

SHOW COUNT(*) WARNINGS;
SELECT @@warning_count;

这些语句的不同之处在于,第一个是诊断语句,不会清除消息列表。第二个,因为它是SELECT语句,所以被认为是不可知的,并且确实清除了消息列表。

相关的诊断语句SHOW ERRORS仅显示错误情况(不包括警告和注释),SHOW COUNT(*)ERRORS语句显示错误总数。见第13.7.5.17节“显示错误声明”。GET DIAGNOSTICS可用于检查个别情况的信息。见第13.6.7.3节“获取诊断声明”。

下面是一个简单的示例,显示了INSERT的数据转换警告。该示例假设禁用了严格SQL模式。启用严格模式后,警告将变成错误并终止INSERT

mysql> CREATE TABLE t1 (a TINYINT NOT NULL, b CHAR(4));
Query OK, 0 rows affected (0.05 sec)mysql> INSERT INTO t1 VALUES(10,'mysql'), (NULL,'test'), (300,'xyz');
Query OK, 3 rows affected, 3 warnings (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 3mysql> SHOW WARNINGS\G
*************************** 1. row ***************************Level: WarningCode: 1265
Message: Data truncated for column 'b' at row 1
*************************** 2. row ***************************Level: WarningCode: 1048
Message: Column 'a' cannot be null
*************************** 3. row ***************************Level: WarningCode: 1264
Message: Out of range value for column 'a' at row 3
3 rows in set (0.00 sec)

max_error_count系统变量控制服务器存储信息的错误、警告和注释消息的最大数量,从而控制显示警告的消息数量。要更改服务器可以存储的消息数,请更改max_error_count的值。默认值为64。

max_error_count仅控制存储的消息数量,而不控制计数的数量。warning_count的值不受max_error_count的限制,即使生成的消息数超过max_error_count。以下示例演示了这一点。ALTER TABLE语句产生三条警告消息(该示例禁用了严格的SQL模式,以防止在单个转换问题后发生错误)。只存储和显示一条消息,因为max_error_count已设置为1,但所有三条消息都被计数(如warning_count的值所示):

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, sql_mode = '';
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: 3mysql> SHOW WARNINGS;
+---------+------+----------------------------------------+
| Level   | Code | Message                                |
+---------+------+----------------------------------------+
| Warning | 1263 | Data truncated for column 'b' at row 1 |
+---------+------+----------------------------------------+
1 row in set (0.00 sec)mysql> SELECT @@warning_count;
+-----------------+
| @@warning_count |
+-----------------+
|               3 |
+-----------------+
1 row in set (0.01 sec)

要禁用消息存储,请将max_error_count设置为0。在这种情况下,warning_count仍然指示发生了多少警告,但消息不会被存储,也无法显示。

sql_notes系统变量控制note消息是否递增warning_count以及服务器是否存储它们。默认情况下,sql_notes为1,但如果设置为0,notes不会递增warning_count,服务器也不会存储它们:

mysql> SET sql_notes = 1;
mysql> DROP TABLE IF EXISTS test.no_such_table;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> SHOW WARNINGS;
+-------+------+------------------------------------+
| Level | Code | Message                            |
+-------+------+------------------------------------+
| Note  | 1051 | Unknown table 'test.no_such_table' |
+-------+------+------------------------------------+
1 row in set (0.00 sec)mysql> SET sql_notes = 0;
mysql> DROP TABLE IF EXISTS test.no_such_table;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW WARNINGS;
Empty set (0.00 sec)

MySQL服务器向每个客户端发送一个计数,指示该客户端执行的最新语句产生的错误、警告和注释的总数。从C API中,可以通过调用mysql_warning_count()来获得该值。请参阅mysql_warning_count()

mysql客户端中,您可以分别使用warningsnowarning命令或其快捷方式\W\w启用和禁用自动警告显示(请参阅第4.5.1.2节“mysql客户端命令”)。例如:

mysql> \W
Show warnings enabled.
mysql> SELECT 1/0;
+------+
| 1/0  |
+------+
| NULL |
+------+
1 row in set, 1 warning (0.03 sec)Warning (Code 1365): Division by 0
mysql> \w
Show warnings disabled.

http://www.ppmy.cn/server/146736.html

相关文章

Y20030018基于Java+Springboot+mysql+jsp+layui的家政服务系统的设计与实现 源代码 文档

家政服务系统的设计与实现 1.摘要2.开发目的和意义3.系统功能设计4.系统界面截图5.源码获取 1.摘要 随着人们生活水平的提高,老龄化、少子化等多重因素影响,我国对家政服务人群的需求与日俱增。家政服务行业对我国的就业和社会效益贡献也与日俱增&#…

linux环境下,导出conda和pip的安装包和对应版本

linux环境下,导出conda和pip的安装包和对应版本 导出conda环境中的安装包文件:导出环境重新创建环境注意事项 导出pip的安装包导出当前安装包列表根据导出的列表重新安装包 注意事项 导出conda环境中的安装包文件: 导出环境 导出环境到 YAML…

uniapp图片上传预览uni.chooseImage、uni.previewImage

文章目录 1.上传图片2.预览图片 1.上传图片 uni.chooseImage(OBJECT) 从本地相册选择图片或使用相机拍照。 App端如需要更丰富的相机拍照API(如直接调用前置摄像头),参考plus.camera 微信小程序从基础库 2.21.0 开始, wx.choos…

编程语言中什么是框架?什么是Cocoa?Foundation.framework的底层实现?Swift如何引入ObjC框架?

编程语言中什么是框架? 在编程语言中,框架(Framework)是一种特定的软件库,它提供了一套预先定义的代码和组件,用于加速和简化特定类型的应用程序的开发。框架通常提供了一套标准化的开发工具集和约定&#…

【Pytorch】优化器(Optimizer)模块‘torch.optim’

torch.optim 是 PyTorch 中提供的优化器(Optimizer)模块,用于优化神经网络模型的参数,更新网络权重,使得模型在训练过程中最小化损失函数。它提供了多种常见的优化算法,如 梯度下降法(SGD&#…

Apache storm安装教程(单机版)

本章教程基于linux centos7安装Apache storm 单机版。 jdk版本:11.0.25 python版本:3.6.8 ZooKeeper 版本:3.7.2 Apache storm版本:2.7.1 一、Apache storm简介 Apache Storm 是一个分布式实时计算系统,专为处理大规模流数据而设计。它允许开发者实时处理大数据流,并对数…

SQL语句在MySQL中的执行过程

一 MySQL 基础架构分析 1.1 MySQL 基本架构概览 下图是 MySQL 的一个简要架构图,从下图你可以很清晰的看到用户的 SQL 语句在 MySQL 内部是如何执行的。 先简单介绍一下下图涉及的一些组件的基本作用帮助大家理解这幅图,在 1.2 节中会详细介绍到这些组…

HarmonyOS4+NEXT星河版入门与项目实战(25)------UIAbility启动模式(文档编辑案例)

文章目录 1、启动模式2、Specified启动模式实现步骤3、文档编辑案例1、文件创建2代码实现3、Statge 创建4、添加配置1、启动模式 Singleton启动模式: 每个 UIAbility 只存在一个实例,是默认的启动模式,任务列表中只会存在一个相同的 UIAbilityStandard启动模式: 每次启动 U…