Si vos tables sont corrompues ou que mysqld
échoue toujours avec quelques commandes de mises à jour, vous
pouvez tester si le bogue est reproductible en effectuant ce qui
suit :
Coupez le démon MySQL (avec mysqladmin
shutdown
).
Créez une copie de vos tables (pour prévoir le cas très improbable ou la réparation tournerait mal).
Vérifiez toutes les tables avec myisamchk -s
base/*.MYI
. Réparez toute table corrompue avec
myisamchk -r base/table.MYI
.
Créez une seconde copie des tables.
Effacez (ou déplacez) tout les vieux fichiers de log du répertoire de données de MySQL si vous avez besoin de plus d'espace.
Démarrez mysqld
avec
--log-bin
. See
Section 5.9.4, « Le log binaire ». Si vous voulez trouver une
requête qui fait planter mysqld
, vous
devez utiliser --log --log-bin
.
Lorsque vous obtenez une table corrompue, stoppez le
serveur mysqld
.
Restaurez les sauvegardes.
Redémarrez le serveur mysqld
sans
--log-bin
Re-exécutez les commandes avec mysqlbinlog
update-log-file | mysql
. Le log des mises à jour
est est sauvegardé dans le dossier des données de MySQL
avec le nom hostname-bin.#
.
Si les tables sont à nouveau corrompues ou que vous pouvez
faire échouer mysqld
avec la commande
précédente, vous avez trouvé un bogue reproductible qui
devrait être facile à corriger ! Envoyez les tables et le
log binaire via FTP à
ftp://support.mysql.com/pub/mysql/secret/
et envoyez un mail à <bugs@lists.mysql.com>
ou
(si vous êtes client du support) à
<support@mysql.com>
à propos du problème et
l'équipe MySQL le corrigera le plus vite possible.
Vous pouvez aussi utiliser le script
mysql_find_rows
pour n'exécuter que quelques
requêtes de mises à jour si vous voulez mieux cerner le
problème.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.