MySQL内部手册/错误消息/添加存储引擎错误信息

27.3添加存储引擎错误信息

要为表处理程序添加错误消息,下面的示例可能会有所帮助。

目的:实现处理程序::get_error_message函数作为ha_federated: get_error_message返回特定于处理程序的错误消息。

例子:

  1. 当发生错误时,返回错误代码。(它不应该在那些HA_ERR使用,目前是120-159)

  2. 处理程序::print_error调用将处理程序错误代码转换为MySQL错误代码,它将输入默认的标签开关(错误)声明:

处理程序。cc:1721默认:{/*此函数的错误为“未知”。询问处理程序是否有这个错误的消息*/ bool临时= FALSE;字符串str;临时= get_error_message(错误,str);如果(!str.is_empty()) {const char* engine= table_type();如果(临时)my_error(ER_GET_TEMPORARY_ERRMSG, MYF(0),错误,str.ptr(),引擎);else my_error(ER_GET_ERRMSG, MYF(0),错误,str.ptr(),引擎);}其他my_error (ER_GET_ERRNO、errflag、错误);DBUG_VOID_RETURN; } }
  1. 因此,处理程序::get_error_message调用时,您可以返回特定于处理程序的错误消息,该错误消息可以是从错误/字符串数组中检索的静态错误消息,也可以是在错误发生时格式化的动态错误消息。

当你返回错误消息时,它将被传递给MySQL并格式化为得到错误%d '%-。100年代的% s.例如:

获取错误788“无法从FEDERATED连接到远程服务器fed.bb.pl”

有错误% d部分将以用户选择的语言返回,但处理程序特定的将使用英语(除非处理程序支持以用户选择的语言返回处理程序错误消息)。