错误消息可以源自服务器端或客户端,每个错误消息包括错误代码,SQLSTATE值和消息字符串,如下所述B.1节,“错误消息来源和元素”.对于服务器端,客户端和全局(服务器和客户端之间的共享)错误,请参阅MySQL 8.0错误提示参考.
出于从程序中的错误检查,使用错误代码编号或符号,而不是错误消息字符串。消息字符串不会经常更改,但有可能。此外,如果数据库管理员更改语言设置,则会影响消息字符串语言;看第10.12节“设置错误消息语言”.
MySQL中的错误信息可在服务器错误日志中可用,在SQL级别,客户端程序和命令行中。
在服务器端,一些消息用于错误日志。有关配置服务器写入日志的位置和方式的信息,请参见第5.4.2节“错误日志”.
其他服务器错误消息将被发送到客户端程序,如中所述客户端错误消息界面.
特定错误代码所在的范围决定了服务器是将错误消息写入错误日志还是将其发送给客户端。有关这些范围的信息,请参见错误代码范围范围.
在SQL级别,MySQL中有几个错误信息源:
SQL语句警告和错误信息可通过
显示警告
和显示错误
陈述。这warning_count
系统变量表示错误,警告和笔记(如果sql_notes
系统变量被禁用)。这ERROR_COUNT.
系统变量表示错误的数量。它的价值不包括警告和笔记。这
获得诊断
声明可用于检查诊断区域中的诊断信息。看第13.6.7.3节,“GET DIAGNOSTICS Statement”.显示从站状态
语句输出包括关于在副本服务器上发生复制错误的信息。显示发动机InnoDB状态
语句输出包括关于最近的外键错误的信息创建表
对A.的声明Innodb.
表失败了。
客户端程序从两个来源接收错误:
从MySQL客户端库中源自客户端的错误。
源自服务器端的错误并由服务器发送到客户端。这些都在客户端库中收到,这使得它们可用于主机客户端程序。
特定错误代码所在的范围决定了它是源自客户端库内部还是由客户端从服务器接收。有关这些范围的信息,请参见错误代码范围范围.
无论错误是源自客户端库还是从服务器接收,MySQL客户端程序通过调用客户端库中的C API函数来获取错误代码、SQLSTATE值、消息字符串和其他相关信息:
mysql_errno ()
返回MySQL错误代码。mysql_sqlstate()
返回SQLSTATE值。mysql_error ()
返回消息字符串。mysql_stmt_errno()
那mysql_stmt_sqlstate ()
,mysql_stmt_error()
是准备好语句的相应错误函数。mysql_warning_count ()
返回最新陈述的错误,警告和注意事项。
有关客户端库错误函数的描述,请参阅MySQL 8.0 C API开发人员指南.
MySQL客户端程序可能以不同方式响应错误。客户端可以显示错误消息,以便用户可以采用纠正措施,内部尝试解决或重试失败的操作,或采取其他操作。例如,(使用mysql.客户端),未能连接到服务器可能会导致此消息:
shell> mysql -h no-suit-host错误2005(hy000):未知mysql server主机'no-suit-host'(0)
这perror程序从命令行提供有关错误编号的信息。看第4.8.2节," Error - Display MySQL Error Message Information ".
MySQL错误代码MY-001231 (ER_WRONG_VALUE_FOR_VAR):变量'%-。不能将64 '设置为'%-.200s'的值
对于MySQL NDB集群错误,使用ndb_perror..看第23.4.16节“ndb_perror - 获取NDB错误消息信息”.
shell> ndb_perror 323 NDB错误码323:无效的节点组id,节点组已经存在:Permanent error: Application error