mysqli:任何地方都可以找到errnos


mysqli: anywhere to find errnos

我正在尝试从一些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结构的某个地方,这样我就不必使用幻数了。非常感谢你的帮助。

由于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;
[...]
相关文章: