添加错误消息的过程取决于你使用的是哪个版本的MySQL:
在MySQL 5.0.3之前,存储在错误消息
errmsg.txt
语言中的文件目录下sql /分享
。也就是说,有名字的文件捷克/ errmsg.txt
,丹麦/ errmsg.txt
等等,每一个是特定于语言的。这些特定于语言的文件必须包含一个行对于每一个错误消息,那么添加新消息包括添加一行errmsg.txt
为每一个语言文件。这个过程涉及添加英语信息英语/ errmsg.txt
文件并运行一个脚本,该脚本将消息添加到其他特定于语言的文件。翻译可以翻译其他的消息errmsg.txt
以后的文件。从MySQL 5.0.3开始,存储在一个单一的错误消息
errmsg.txt
文件sql /分享
目录,它包含了所有语言的错误消息。消息被错误符号分组。对于每一个符号,必须有英文消息,消息可以给其他语言。如果没有消息对于一个给定的语言,使用的是英文版本。信息对于一个给定的语言写在语言使用的字符集,因此文件包含信息在几个字符集。从MySQL 5.5,存储在一个单一的错误消息
errmsg-utf8.txt
文件sql /分享
目录中。文件格式是类似的errmsg.txt
,但文件的内容都写在一个字符集,use utf8。另外一个特性是,错误消息可能包含位置参数。
的comp_err程序编译错误消息文本文件或文件到特定于语言的errmsg.sys
文件目录下每个位于适当的语言sql /分享
:
在MySQL 5.5之前,comp_err读取
errmsg.txt
和写errmsg.sys
文件,每个文件的字符集与语言相关的文件。例如,sql /分享/韩国/ errmsg.sys
是用euckr
。从MySQL 5.5,comp_err读取
errmsg-utf8.txt
和写errmsg.sys
文件使用use utf8
。
comp_err还生成的头文件包括
目录中。MySQL的构建过程comp_err自动。
请注意:你应该遵守一些关于错误消息应用一般考虑不管你的MySQL版本:
总是使用参数构造等
“% .64点”
防范缓冲区溢出。的最大长度是错误消息MYSQL_ERRMSG_SIZE
。从来没有添加新的参数(例如% s)现有的错误消息。错误消息必须是向后兼容的。如果添加了一个参数,较旧的服务器就会崩溃当运行一个新的错误消息文件。
如果您需要添加新的参数现有的错误消息,可以引入新的错误消息但继续使用旧的错误代码。例如,在MySQL 5.1中,
处理程序::print_keydup_error ()
方法传递一个消息ER (ER_DUP_ENTRY_WITH_KEY_NAME)
,但总是使用ER_DUP_ENTRY
错误代码。