由於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;
[...]
你可以得到錯誤的文本中'$ mysqli-> error' – keithhatfield 2012-03-28 17:28:35
我所希望做的時候錯誤是某種類型的自動檢測(特別是重複條目)。我可以查看這個errno是什麼(1062),但更喜歡有一個常量(類似於'$ mysqli :: ER_DUP_ENTRY'),但是在提到的文檔中找不到任何東西。我主要想知道是否有某個地方的錯誤代碼被定義爲我沒有看到。 – jpevarnek 2012-03-28 17:48:37
我希望看看我是否可以做同樣的事情。你有沒有找到任何東西? – Stspurg 2013-08-08 20:22:34