B.2 错误信息接口

错误消息可以起源于服务器端或 Client 端,并且每个错误消息都包含错误代码,SQLSTATE 值和消息字符串,如第 B.1 节“错误消息的源和组件”中所述。有关服务器端,Client 端和全局(服务器和 Client 端之间共享)错误的列 table,请参见第 B.3 节“错误消息参考”

要从程序内部进行错误检查,请使用错误代码编号或符号,而不是错误消息字符串。消息字符串不经常更改,但是可以更改。另外,如果数据库 Management 员更改语言设置,则会影响消息字符串的语言。参见第 10.12 节“设置错误消息语言”

在服务器级别的 SQL 错误日志中,在 Client 端程序内部以及在命令行中,都可以在服务器错误日志中找到 MySQL 中的错误信息。

Error Log

在服务器端,某些消息用于错误日志。有关配置服务器在何处以及如何写入日志的信息,请参阅第 5.4.2 节“错误日志”

其他服务器错误消息旨在发送到 Client 端程序,并且如Client 端错误消息界面中所述可用。

SQL 错误消息界面

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

Client 端错误消息界面

Client 端程序从两个来源收到错误:

  • 源于 MySQLClient 端库中 Client 端的错误。

  • 源于服务器端并由服务器发送给 Client 端的错误。它们在 Client 端库中接收,这使它们可用于主机 Client 端程序。

无论错误是从 Client 端库内部产生还是从服务器接收到,MySQLClient 端程序都会通过调用 Client 端库中的 C API 函数来获取错误代码,SQLSTATE 值,消息字符串和其他相关信息:

有关 Client 端库错误功能的描述,请参见第 27.7 节“ MySQL C API”

MySQLClient 端程序可能以多种方式响应错误。Client 端可能会显示错误消息,以便用户可以采取纠正措施,在内部尝试解决或重试失败的操作或采取其他措施。例如,(使用mysqlClient 端),连接服务器失败可能导致以下消息:

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

命令行错误消息界面

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

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

对于 MySQL NDB Cluster 错误,请使用ndb_perror。参见第 21.4.17 节“ ndb_perror-获取 NDB 错误消息信息”

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