B.1 错误消息源和组件

本节讨论错误消息如何在 MySQL 中产生以及它们包含的组件。

错误消息源

错误消息可能源自服务器端或 Client 端:

写入错误日志的示例服务器端错误消息:

2018-09-26T14:46:06.326016Z 0 [Note] Skipping generation of SSL
certificates as options related to SSL are specified.
2018-10-02T03:20:39.410387Z 0 [ERROR] Plugin 'InnoDB'
registration as a STORAGE ENGINE failed.

发送到 Client 端程序的示例服务器端错误消息,如mysqlClient 端所示:

mysql> SELECT * FROM no_such_table;
ERROR 1146 (42S02): Table 'test.no_such_table' doesn't exist

源自 Client 端库内部的示例 Client 端错误消息,如mysqlClient 端所示:

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

无论错误是从 Client 端库内部产生还是从服务器接收到,MySQLClient 端程序都可能以不同的方式响应。如刚刚所示,Client 端可以显示错误消息,以便用户可以采取纠正措施。Client 端可以改为在内部尝试解决或重试失败的操作,或采取其他措施。

错误消息组件

发生错误时,错误信息包括几个组成部分:错误代码,SQLSTATE 值和消息字符串。这些组件具有以下 Feature:

每个错误号都有一个对应的符号值。例子:

错误代码在给定 MySQL 系列的一般可用性(GA)版本中稳定。在系列达到 GA 状态之前,新代码可能仍在开发中,并且可能会发生变化。

对于服务器端错误,并非所有 MySQL 错误号都有相应的 SQLSTATE 值。在这些情况下,将使用'HY000'(一般错误)。

对于 Client 端错误,SQLSTATE 值始终为'HY000'(一般错误),因此对于区分一个 Client 端错误和另一个 Client 端错误没有意义。

首页