gpt4 book ai didi

mysql - 如何调查 MySQL 错误

转载 作者:搜寻专家 更新时间:2023-10-30 20:36:17 26 4
gpt4 key购买 nike

下面是我发现的用于显示 MySQL 中的错误和警告的查询:

SELECT 
`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;

是否有某种方法可以深入到 performance_schema 以找到与上面的 errorswarnings 关联的确切错误消息?

我也很好奇如果 db 列或 query 列显示为 NULL 意味着什么。下面是我所说的几个具体例子

+---------------------+--------+------------+--------+----------+--------+
| query | db | exec_count | errors | warnings | digest |
+---------------------+--------+------------+--------+----------+--------+
| SHOW MASTER LOGS | NULL | 192 | 192 | 0 | ... |
+---------------------+--------+------------+--------+----------+--------+
| NULL | NULL | 553477 | 64 | 18783 | NULL |
+---------------------+--------+------------+--------+----------+--------+
| SELECT COUNT ( * ) | NULL | 48 | 47 | 0 | ... |
|FROM `mysql` . `user`| | | | | |
+---------------------+--------+------------+--------+----------+--------+

我也愿意使用不同的查询来显示这些错误/警告

最佳答案

消息将在 performance_schema.events_statements_history.message_text 列中。您确实需要确保将 performance_schema_events_statements_history_size 配置变量设置为正且足够大的值,并且启用历史记录收集。要启用历史记录收集,请运行:

update performance_schema.setup_consumers set enabled='YES' 
where name='events_statements_history';

检查是否启用:

select * from performance_schema.setup_consumers where 
name='events_statements_history';
db

NULL 值表示没有选择事件数据库。请注意,事件数据库不必与查询中涉及的表的数据库相同。当未在查询中明确指定时,事件数据库将用作默认值。

这只会给你错误信息,而不是警告信息。简单看一下代码,似乎警告文本没有记录在任何地方——这是可以理解的,因为一条语句可能会产生数百万条警告文本。所以你有几个选择:

  • events_statements_history.sql_text 中提取语句,重新执行它,然后运行 ​​SHOW WARNINGS
  • 提取该语句,在您的应用程序代码中对其进行跟踪,然后检测您的代码以记录 SHOW WARNINGS 的输出,希望在手动执行无法重现警告的情况下实时捕获它

关于mysql - 如何调查 MySQL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38232532/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com