Ich arbeite an versuchen, automatisch von einigen mysql-Fehler zu erholen und frage mich, ob die Fehlercodes, die ich von $ mysqli-> errno bekomme überall definiert sind. Ich habe eine Liste unter http://docs.camlcity.org/docs/godisrc/ocaml-mysql-1.0.4.tar.gz/ocaml-mysql-1.0.4/etc/mysqld_error.txt gefunden, frage mich aber, ob sie irgendwo in der mysqli-Struktur gespeichert sind, also muss ich keine magischen Zahlen verwenden. Vielen Dank für jede Hilfe.mysqli: irgendwo zu errnos
2
A
Antwort
0
Da die mysql-Fehler stark von der Serverversion abhängen, die Sie verwenden, habe ich ein kleines Bash-Skript erstellt, das Sie auf Ihrem Server ausführen können, um eine PHP-Klasse mit allen Fehlercodes zu generieren.
#!/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 "}";
speichern Skript und ausführen, errmsg[-utf8].txt
den Standort Ihres Servers übergeben. Es wird erzeugen so etwas wie:
class MysqlErrorConst {
const ER_HASHCHK = 1000;
const ER_NISAMCHK = 1001;
const ER_NO = 1002;
const ER_YES = 1003;
const ER_CANT_CREATE_FILE = 1004;
[...]
Sie können den Text des Fehlers erhalten in 'mysqli- $> error' – keithhatfield
Was ich suche ist automatisch erkennen zu tun, wenn ein Fehler eines bestimmten Typs ist (insbesondere das Duplikat Eintrag). Ich kann nachsehen, was das Errno dafür ist (1062), hätte aber lieber eine Konstante (etwas wie $ mysqli :: ER_DUP_ENTRY), kann aber in der Dokumentation nichts finden. Ich frage mich meistens, ob irgendwo die Fehlercodes definiert sind, die ich nicht sehe. – jpevarnek
Ich hoffe zu sehen, ob ich das Gleiche machen kann. Hast du jemals etwas gefunden? – Stspurg