Vérifier les entrées du journal d'erreurs
Dans cette étape, nous allons vérifier le journal d'erreurs de MySQL pour identifier et comprendre les messages d'erreur générés lors des opérations sur la base de données. Le journal d'erreurs est une ressource essentielle pour résoudre les problèmes, diagnostiquer les défauts et surveiller l'état de votre serveur MySQL.
L'emplacement du fichier du journal d'erreurs de MySQL dépend de la configuration de votre système. Un emplacement courant est /var/log/mysql/error.log
. Vous pouvez déterminer l'emplacement exact en interrogeant la variable système log_error
.
Tout d'abord, connectez-vous au serveur MySQL en tant qu'utilisateur root
:
mysql -u root -p
Ensuite, exécutez l'instruction SQL suivante pour trouver l'emplacement du fichier du journal d'erreurs :
SHOW VARIABLES LIKE 'log_error';
La sortie affichera la valeur actuelle de la variable log_error
, qui est le chemin vers le fichier du journal d'erreurs.
Maintenant que vous connaissez l'emplacement du fichier du journal d'erreurs, vous pouvez utiliser un éditeur de texte ou un outil en ligne de commande pour afficher son contenu. Dans l'environnement de la machine virtuelle (VM) LabEx, nous recommandons d'utiliser l'éditeur nano
ou la commande cat
.
Par exemple, si le fichier du journal d'erreurs est situé à /var/log/mysql/error.log
, vous pouvez l'afficher en utilisant la commande suivante :
sudo cat /var/log/mysql/error.log
Ou, vous pouvez utiliser nano
pour ouvrir le fichier dans un éditeur de texte :
sudo nano /var/log/mysql/error.log
Le fichier du journal d'erreurs contient un enregistrement chronologique des événements, y compris les erreurs, les avertissements et les messages d'information. Chaque entrée comprend généralement une horodatage, le niveau de gravité du message et une description de l'événement.
Générons quelques entrées dans le journal d'erreurs en provoquant intentionnellement des erreurs dans nos opérations sur la base de données. Nous allons utiliser la base de données testdb
et la table products
des étapes précédentes.
Tout d'abord, essayons d'insérer un produit en double dans la table products
:
INSERT INTO products (id, name, quantity) VALUES (1, 'Product A', 10);
Cela générera une erreur de clé en double car la colonne id
est une clé primaire.
Ensuite, essayons de mettre à jour la quantité d'un produit à une valeur négative en utilisant la procédure stockée update_quantity
:
CALL update_quantity(1, -5);
Cela générera une erreur personnalisée que nous avons définie dans l'étape précédente.
Maintenant, vérifions à nouveau le fichier du journal d'erreurs pour voir les messages d'erreur générés par ces opérations. Vous devriez voir des entrées similaires aux suivantes :
[timestamp] [ERROR] [MY-013187] [InnoDB] Duplicate entry '1' for key 'products.PRIMARY'
[timestamp] [ERROR] [MY-013187] [Server] Quantity cannot be negative.
La première entrée indique une erreur de clé en double lors de la tentative d'insertion d'un produit avec un identifiant existant. La deuxième entrée montre le message d'erreur personnalisé généré par la procédure stockée update_quantity
.
En analysant les entrées du journal d'erreurs, vous pouvez obtenir des informations précieuses sur les causes des erreurs et prendre les mesures appropriées pour les résoudre. Par exemple, vous devrez peut-être corriger les erreurs de saisie de données, modifier les procédures stockées ou ajuster la configuration de la base de données.
Il est important de vérifier régulièrement le fichier du journal d'erreurs pour identifier et résoudre les problèmes potentiels avant qu'ils ne deviennent plus graves. Vous pouvez également configurer MySQL pour faire tourner automatiquement le fichier du journal d'erreurs afin d'éviter qu'il ne devienne trop volumineux.
Enfin, n'oubliez pas de désactiver la journalisation générale des requêtes si vous l'avez activée dans la première étape, car cela peut consommer beaucoup d'espace disque et affecter les performances du serveur :
mysql -u root -p -e "SET GLOBAL general_log = 'OFF';"