mysqli:在任何地方找到errnos

时间:2012-03-28 17:06:41

标签: php mysqli

我正在努力尝试从一些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结构中,所以我不必使用幻数。非常感谢您的帮助。

1 个答案:

答案 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;

[...]