mysqli: где-нибудь, чтобы найти errnos - PullRequest
2 голосов
/ 28 марта 2012

Я работаю над попыткой автоматического восстановления после некоторых ошибок 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 голосов
/ 27 августа 2013

Поскольку ошибки 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;

[...]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...