2016-03-13 111 views
0

爲了減少我在MySQL中的錯誤日誌的大小,我希望能夠僅存儲MySQL錯誤代碼(1054)而不是消息(「ER_BAD_FIELD_ERROR」)。但是,我可以使用什麼來從錯誤代碼單獨獲取錯誤消息?只從錯誤代碼中獲取MySQL錯誤信息

通常你都是具有:

<?PHP 
$db_link = new mysqli($hostname, $username, $password, $database); 

$statement = $db_link->prepare('SELECT SomeFieldThatDoesNotExist FROM Person'); 
$statement->execute(); 

if(!$statement) { 
    $specific_error = $db_link->error; 
    $error_number = $db_link->errno; 
} 
?> 

想象一下,我有錯誤1054(參見:https://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html#error_er_bad_field_error)。

只有數字1052,我可以用什麼來獲取實際的MySQL錯誤信息本身?

+0

有辦法。你可以運行'PERROR $ {錯誤號}'並捕獲它的輸出(應該在默認情況下MySQL服務器,IIRC安裝),或者您也可以閱讀/解析MySQL源文件......這取決於你真正想要完成的工作。 –

回答

0

使用SHOW ERRORS;

手冊:https://mariadb.com/kb/en/mariadb/show-errors/

SELECT f(); 
ERROR 1305 (42000): FUNCTION f does not exist 

SHOW COUNT(*) ERRORS; 
+-----------------------+ 
| @@session.error_count | 
+-----------------------+ 
|      1 | 
+-----------------------+ 

SHOW ERRORS; 
+-------+------+---------------------------+ 
| Level | Code | Message     | 
+-------+------+---------------------------+ 
| Error | 1305 | FUNCTION f does not exist | 
+-------+------+---------------------------+ 
+0

我的問題更多:如果你只有「1305」(比如從幾年前的日誌文件中),你可以在mysql中使用什麼內部方法來獲取其餘的錯誤信息? (級別,消息,sqlstate等..) – HoldOffHunger