2016-03-13 75 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