statement_with_errors_or_warnings,x $ statements_with_errors_or_warnings
查看产生错误或警告的语句,每次情况下,按照错误数量和警告数量降序排序。数据来源:performance_schema.events_statements_summary_by_digest
PS:这里大家注意了,语法错误或产生警告的语句通常错误日志中不记录,慢查询日志中也不记录,只有查询日志中会记录所有的语句,但不携带语句执行状态的信息,所以无法判断是否执行了错误或有警告的语句,通过该视图可以查询到语句执行的状态信息,以后开发执行了某个语句有语法错误来问你想查看具体的语句文本的时候,别再说MySQL不支持查看啦。
首先查询语句文本
SELECT sys.format_statement(DIGEST_TEXT) AS query,
SCHEMA_NAME as db,
COUNT_STAR AS exec_count,
SUM_ERRORS AS errors,
IFNULL(SUM_ERRORS / NULLIF(COUNT_STAR, 0), 0) * 100 as error_pct,
SUM_WARNINGS AS warnings,
IFNULL(SUM_WARNINGS / NULLIF(COUNT_STAR, 0), 0) * 100 as warning_pct,
FIRST_SEEN as first_seen,
LAST_SEEN as last_seen,
DIGEST AS digest
FROM performance_schema.events_statements_summary_by_digest
WHERE SUM_ERRORS > 0
OR SUM_WARNINGS > 0
ORDER BY SUM_ERRORS DESC, SUM_WARNINGS DESC;
不带x$前缀的视图
admin@localhost : sys 12:47:36> select * from statements_with_errors_or_warnings limit 1G
*************************** 1. row ***************************
query: SELECT * FROM test
LIMIT ? FOR UPDATE
db: wangzheng
exec_count: 5
errors: 3
error_pct: 60.0000
warnings: 0
warning_pct: 0.0000
first_seen: 2022-09-07 11:29:44
last_seen: 2022-09-07 12:45:58
digest: 9f50f1fc79fc6ea678dec6576b7d7faa
1 row in set (0.00 sec)
带x$前缀的视图
admin@localhost : sys 12:47:45> select * from x$statements_with_errors_or_warnings limit 1G;
*************************** 1. row ***************************
query: SELECT * FROM test
LIMIT ? FOR UPDATE
db: xiaoboluo
exec_count: 5
errors: 3
error_pct: 60.0000
warnings: 0
warning_pct: 0.0000
first_seen: 2022-09-07 11:29:44
last_seen: 2022-09-07 12:45:58
digest: 9f50f1fc79fc6ea678dec6576b7d7faa
1 row in set (0.00 sec)
查询:通过标准化转换的语句字符串
db:语句对应的默认数据库,如果没有分布式数据库,该分区为NULL
exec_count:语句执行的总次数
错误:语句发生的错误总次数
error_pct:语句产生错误的次数与语句总执行次数的百分比
警告:语句发生的警告总次数
warning_pct:语句产生警告的与语句总执行次数的百分比
first_seen:该语句第一次出现的时间
last_seen:该语句最近一次出现的时间
摘要:语句摘要计算的md5哈希值