2012-03-28 49 views
2

我正在嘗試從一些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結構中,所以我不必使用幻數。非常感謝您的幫助。mysqli:任何地方都可以找到errnos

+0

你可以得到錯誤的文本中'$ mysqli-> error' – keithhatfield 2012-03-28 17:28:35

+0

我所希望做的時候錯誤是某種類型的自動檢測(特別是重複條目)。我可以查看這個errno是什麼(1062),但更喜歡有一個常量(類似於'$ mysqli :: ER_DUP_ENTRY'),但是在提到的文檔中找不到任何東西。我主要想知道是否有某個地方的錯誤代碼被定義爲我沒有看到。 – jpevarnek 2012-03-28 17:48:37

+0

我希望看看我是否可以做同樣的事情。你有沒有找到任何東西? – Stspurg 2013-08-08 20:22:34

回答

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; 

[...] 
相關問題