Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

7.4.2.3 错误事件字段

错误事件旨在错误日志中包含一组字段,每个字段由键/值对组成。事件字段可以分类为核心、可选或用户定义:

  • 核心字段是自动设置的错误事件。但是,在事件处理过程中,核心字段的存在不一定,因为核心字段,如任何类型的字段,可以被日志过滤器unset。如果这样发生,字段将无法被后续处理中的过滤器和组件找到(例如日志接收器)。

  • 可选字段通常不存在,但可能出现在某些事件类型中。当存在时,可选字段提供了额外的事件信息,如适用和可用。

  • 用户定义字段是任何名称不作为核心或可选字段的字段。用户定义字段直到被日志过滤器创建时不存在。

如前述描述所示,任何给定的字段可能在事件处理过程中不存在,或者因为它从不在那里,或者被过滤器丢弃了。对于日志接收器,字段不存在的效果是特定于接收器的。例如,接收器可能会从日志消息中省略该字段,指示该字段丢失,或者用默认值代替。当怀疑时,请测试:使用unset该字段的过滤器,然后检查日志接收器对其的处理。

以下部分描述了核心和可选错误事件字段。对于个别日志过滤器组件,可能存在这些字段的过滤器特定考虑,或者过滤器可能添加未列出的用户定义字段。有关详细信息,请参阅特定过滤器的文档。

核心错误事件字段

这些错误事件字段是核心字段:

  • time

    事件时间戳,以微秒精度。

  • msg

    事件消息字符串。

  • prio

    事件优先级,以指示系统、错误、警告或注意/信息事件。此字段对应于 syslog 中的严重性。下表显示了可能的优先级。

    Event Type Numeric Priority
    系统事件 0
    错误事件 1
    警告事件 2
    注意/信息事件 3

    prio 值是数字。相关的是,错误事件也可能包括一个可选的 label 字段,表示优先级作为字符串。例如,事件的 prio 值为 2 可能具有 'Warning'label 值。

    过滤器组件可能根据优先级包括或删除错误事件,除非系统事件是强制性的且不能删除的。

    一般来说,消息优先级是根据以下规则确定的:

    情况或事件是否可操作?

    • 是:情况或事件是否可忽略?

      • 是:优先级为警告。

      • 否:优先级为错误。

    • 否:情况或事件是否强制性的?

      • 是:优先级为系统。

      • 否:优先级为注意/信息。

  • err_code

    事件错误代码,作为数字(例如,1022)。

  • err_symbol

    事件错误符号,作为字符串(例如,'ER_DUP_KEY')。

  • SQL_state

    事件 SQLSTATE 值,作为字符串(例如,'23000')。

  • subsystem

    事件发生的子系统。可能的值是 InnoDBInnoDB 存储引擎)、Repl(复制子系统)和 Server(否则)。

可选错误事件字段

可选错误事件字段分为以下类别:

  • 关于错误的附加信息,例如操作系统错误或错误标签:

    • OS_errno

      操作系统错误号。

    • OS_errmsg

      操作系统错误消息。

    • 标签

      对应于 prio 值的标签,以字符串形式。

  • 事件发生的客户端标识:

    • 用户

      客户端用户。

    • 主机

      客户端主机。

    • 线程

      mysqld 中负责产生错误事件的线程 ID。该 ID 表示服务器的哪一部分产生了事件,与一般查询日志和慢查询日志消息一致,包括连接线程 ID。

    • 查询 ID

      查询 ID。

  • 调试信息:

    • 源文件

      事件发生的源文件,不包括前导路径。

    • 源行

      事件发生的源文件中的行号。

    • 函数

      事件发生的函数。

    • 组件

      事件发生的组件或插件。