2016-03-13 1 views
0

Pour réduire la taille de mon journal d'erreur dans MySQL, je veux être en mesure de stocker les codes d'erreur MySQL (1054) et pas les messages ("ER_BAD_FIELD_ERROR"). Mais que puis-je utiliser pour passer du code d'erreur seul au message d'erreur?Obtenir message d'erreur MySQL à partir du code d'erreur seulement

Normalement, vous obtenez à la fois avec:

<?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; 
} 
?> 

Imaginez que j'ai erreur 1054 (voir: https://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html#error_er_bad_field_error).

Avec juste le nombre 1052, que puis-je utiliser pour obtenir le vrai message d'erreur MySQL lui-même?

+0

Il y a plusieurs façons ... Vous pouvez exécuter 'perror $ {}' errno et capturer sa sortie (doit être installé avec le serveur MySQL par défaut, IIRC), ou vous pouvez lire/analyser les fichiers sources MySQL ... cela dépend de ce que vous essayez vraiment d'accomplir. –

Répondre

0

utilisez SHOW ERRORS;

Manuel: 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

Ma question est plus: Si vous avez seulement "1305" (comme, à partir d'un fichier journal d'il y a des années), quelle méthode interne pouvez-vous utiliser dans mysql pour obtenir le reste de l'information d'erreur? (Le niveau, message, sqlstate, etc.) – HoldOffHunger