# B.2 错误信息接口

错误消息可以源自服务器端或客户端,每条错误消息都包括错误代码、SQLSTATE 值和消息字符串,如中所述第 B.1 节,“错误消息源和元素”.有关服务器端、客户端和全局(在服务器和客户端之间共享)错误的列表,请参阅MySQL 8.0 错误信息参考 (opens new window).

对于程序内部的错误检查,使用错误代码数字或符号,而不是错误消息字符串。消息字符串不会经常更改,但有可能。此外,如果数据库管理员更改语言设置,则会影响消息字符串的语言;看第 10.12 节,“设置错误消息语言”.

MySQL 中的错误信息可在服务器错误日志、SQL 级别、客户端程序内部和命令行中获得。

# 错误日志

在服务器端,一些消息用于错误日志。有关配置服务器写入日志的位置和方式的信息,请参阅第 5.4.2 节,“错误日志”.

其他服务器错误消息旨在发送到客户端程序,并且如中所述可用客户端错误消息接口.

特定错误代码所在的范围决定了服务器是将错误消息写入错误日志还是发送给客户端。有关这些范围的信息,请参阅错误代码范围.

# SQL 错误消息接口

在 SQL 级别,MySQL 中有几个错误信息来源:

# 客户端错误消息接口

客户端程序从两个来源接收错误:

$> mysql -h no-such-host
ERROR 2005 (HY000): Unknown MySQL server host 'no-such-host' (-2)

# 命令行错误消息接口

错误程序从命令行提供有关错误号的信息。看第 4.8.2 节,“perror - 显示 MySQL 错误消息信息”.

$> perror 1231
MySQL error code MY-001231 (ER_WRONG_VALUE_FOR_VAR): Variable '%-.64s'
can't be set to the value of '%-.200s'

对于 MySQL NDB Cluster 错误,请使用数据库_错误.看第 23.5.16 节,“ndb_perror - 获取 NDB 错误消息信息”.

$> ndb_perror 323
NDB error code 323: Invalid nodegroup id, nodegroup already existing:
Permanent error: Application error