我正在努力尝试从一些mysql错误中自动恢复,并想知道我从$ mysqli-> errno得到的错误代码是否在任何地方定义。我在http://docs.camlcity.org/docs/godisrc/ocaml-mysql-1.0.4.tar.gz/ocaml-mysql-1.0.4/etc/mysqld_error.txt找到了一个列表,但我想知道它们是否实际存储在某个地方的mysqli结构中,所以我不必使用幻数。非常感谢您的帮助。
答案 0 :(得分:0)
由于mysql错误严重依赖于您使用的服务器版本,因此我创建了一个小型Bash脚本,您可以在服务器上运行该脚本以生成包含所有错误代码的PHP类。
#!/bin/bash
if [ ! -n "$1" ]
then
echo "usage: $0 <path to errormsg.txt>";
exit 1;
fi
echo "class MysqlErrorConst {";
CURRENT_ERROR_CODE=`head $1 | grep "start-error-number" | sed 's/start-error-number //' | tr -d "\n"`
for CURRENT_ERROR_NAME in `grep "^[A-Z_]\+" $1 | sed 's/\(^[^ ]*\) .*/\1/g'`
do
echo -e "\t const $CURRENT_ERROR_NAME = $CURRENT_ERROR_CODE;\n";
((CURRENT_ERROR_CODE++));
done
echo "}";
保存此脚本并运行它,传递服务器errmsg[-utf8].txt
的位置。它会产生类似的东西:
class MysqlErrorConst {
const ER_HASHCHK = 1000;
const ER_NISAMCHK = 1001;
const ER_NO = 1002;
const ER_YES = 1003;
const ER_CANT_CREATE_FILE = 1004;
[...]