MySQL
Version de MySQL : à partir de la 5.5-20.
accueil |
console | VBScript |
PowerShell | php |
MySQL | documentation
| formation |
trucs et astuces |
exemples | glossaire
Généralités
La
gestion d'erreurs dans l'environnement MySQL
Programmation de la gestion des erreurs dans un script MySQL
Error Handler en environnement MySQL
Journalisation des erreurs en environnement MySQL
I - GENERALITES
Comme chacun
sait, MySQL est un système de gestion de bases de données relationnel
Open Source, probablement le plus utilisé pour la conception de sites WEB.
Créé en 1995 par la société suédoise MySQL AB, celle-ci a été acquise
par Sun Microsystems en 2008, puis Sun a été acquis par
Oracle en 2009. Les trois concurrents, de MySQL dans le monde des
sgdb relationnels, étant Rdb/VMS (DEC, acquis par Oracle), Oracle
Database et Microsoft SQL Server, on comprend qu'aujourd'hui il
ne reste plus que deux éditeurs de sgdb. Vue la nullité avérée des produits
Microsoft, vous aurez compris qu'il n'y en a en réalité plus qu'un de
sérieux. Et ca tombe bien, puisque c'est de celui-ci que nous allons parler
maintenant.
Sachez aussi que
le langage le plus adapté au dialogue avec MySQL est... php.
Donc, si vous avez lu la page précédente, vous allez bientôt tout connaître
!
[début]
II - LA GESTION D'ERREURS DANS L'ENVIRONNEMENT MySQL
Tout appel,
depuis quelque langage que ce soit, à une instruction MySQL renvoie
trois informations sur la bonne exécution (ou non) de l'instruction. Le
langage php, notamment, en renvoie une quatrième : TRUE ou FALSE.
Exemple à partir de
l'interpréteur MySQL
shell> SELECT * FROM
no_such_table;
ERROR 1146 (42S02): Table 'no_such_table' doesn't exist
La première
information est le numéro de l'erreur, écrit par le système dans la variable
mysql_errno()
La seconde (entre
parenthèses) est un code d'état du microsystème MySQL suite à l'appel
à l'instruction. C'est mysql_sqlstate()
La troisième est
le texte explicatif de l'erreur. il est contenu dans mysql_error().
Il change en fonction de la langue paramétrée à l'installation de
MySQL
La quatrième,
retournée par php, est un indicateur sur la bonne exécution de
l'instruction. Il est retourné dans la variable à gauche du signe "=".
ATTENTION :
mysql_sqlstate n'est utilisable qu'avec la version "programmation
orientée objets" de php (PDO)
et de MySQL (mysqli).
Exemple dans un
script php en programmation dite procédurale (à l'opposé de "orientée
objets")
$db_server = "mysql.monsite.com";
$db_basename = "mabase";
$db_user = "root";
$db_pwd = "123456789";
$rs = mysql_connect($db_server, $db_user, $db_pwd);
if (!$rs)
{
echo "%NIP-F-SQLCONNECT, Connect error " . mysql_errno() . " " .
mysql_error();
exit;
}
$rs = mysql_select_db($db_basename);
if (!$rs)
{
echo "%NIP-F-SQLOPEN, Open error " . mysql_errno() . " " .
mysql_error();
exit;
}
$query = "SELECT * FROM utilisateurs WHERE idTransaction= '$txn_id'";
$rs = mysql_query($query);
if (!$rs)
{
$err = "%NIP-F-SQLQUERY_1, Query error " . mysql_errno() . " " .
mysql_error();
exit;
}
$data = mysql_fetch_object($query);
if (!$data)
{
La différence entre les codes
d'erreur renvoyés dans mysql_errno() et mysql_sqlstate() est
la suivante :
mysql_errno()
est un code erreur spécifique à MySQL
mysql_sqlstate() est un
code erreur conforme au standard ANSI SQL et ODBC (Open DataBase
Connectivity)
La liste des codes erreur
MySQL côté client se trouve dans le fichier
errmsg.h
La liste des codes erreur
MySQL côté serveur se trouve
ici.
La liste des codes erreur
SQLstate se trouve
là.
Comme d'habitude, pour en savoir
plus,
la doc.
[début]
III - PROGRAMMATION DE LA GESTION DES ERREURS DANS UN SCRIPT
php/MySQL
Bon, bin, là, y'a pas grand chose
à dire vu que, qui dit script php/MySQL, dit page
précédente... :-)
[début]
IV - ERROR HANDLER EN ENVIRONNEMENT MySQL
Il existe sur
Internet une série de trois magnifiques articles écrits par Guy Harrison
et Steven Feuerstein, tirés de leur bouquin édité chez O'Reilly
: MySQL Stored Procedure Programming (2006) :
L'auteur ne voit pas la nécessité
ici de paraphraser ces articles.
[début]
V - JOURNALISATION DES ERREURS EN ENVIRONNEMENT MySQL
Vue la complexité
de fonctionnement des systèmes de gestion de bases de données, il est
évident que MySQL dispose d'un système de log depuis longtemps,
disons même depuis que le produit existe. Il n'y a donc (presque) rien à
programmer.
Dans MySQL, il existe en
standard cinq fichiers de log :
-
Error Log
-
General Query Log
-
Binary Log
-
Relay Log
-
Slow Query Log
Par défaut,
aucun fichier de log n'est activé. C'est important à savoir. Pour
activer le logging,
lire ceci. Ces données peuvent être écrites dans des fichiers-texte ("file
logging") ou dans des tables de la base ("table logging").
Le fichier
Error Log enregistre les problèmes rencontrés au démarrage, pendant
l'exécution de MySQL et à l'arrêt.
Le fichier
General Query Log enregistre les connexions et les transactions des
clients
Le fichier
Binary Log enregistre les transactions reçues qui changent des données
dans la base
Le fichier
Relay Log mémorise les données transmises par un serveur de réplication
le cas échéant
Le fichier
Slow Query Log enregistre les transactions "longues" (le paramètre de
durée est au choix de l'administrateur de la base)
La documentation de tout ça (en
anglais) est
ici. Bonne lecture !
[début]
accueil |
console | VBScript |
PowerShell | php |
MySQL | documentation
| formation |
trucs et astuces |
exemples | glossaire
|