Migration d'anciennes tables MySQL 4

À l'occasion de la migration de vieilles tables MySQL 4 vers MariaDB 10.7, l'erreur suivante est survenue: «error 190 "Incompatible key or row definition between the MariaDB .frm file and the information in the storage engine. You have to dump an" from storage engine MyISAM». La table peut aussi être marquée comme utilisée dans phpMyAdmin. Il se peut également que la table soit incomplète. Bref, le problème est très critique.

⚠ Cet article ne concerne pas l'import/export via un fichier SQL, mais si vous vous contentez de garder les anciens fichiers FRM/MYD/MYI pour les mettre à jour avant toute utilisation.

Il y a trois fichiers par table : le descripteur (FRM), les données (MYD) et l'index (MYI). La migration est obligatoire pour toutes les tables de la base de données. La procédure est identique mais les tables ayant l'erreur 190 doivent d'abord être réparées au niveau du descripteur. C'est le mot-clé magique USE_FRM.

USE votre_base;
CHECK TABLE votre_table; -- Pour savoir s'il y a l'erreur 190
REPAIR TABLE votre_table USE_FRM; -- Pour les tables avec l'erreur 190
REPAIR TABLE votre_table;
CHECK TABLE votre_table; -- Vous devez lire «OK»
OPTIMIZE TABLE votre_table;

Toutes ces erreurs sont détaillées dans un cas de test et un bug.

Ensuite, il existe des cas où la table des utilisateurs MariaDB est corrompue si vous ajoutez des utilisateurs ou changez un mot de passe. Il faut alors faire :

REPAIR TABLE mysql.users

Au final, grâce à l'astuce du USE_FRM qui peut aussi être lancée dans l'ancienne version de MySQL, les données redeviennent visibles sans trop d'effort. Il est important de contrôler le nombre d'enregistrements avant/après et d'ajuster cette procédure au cas par cas. Faîtes également un contrôle visuel sur les données avant de terminer.

Posté par admin le 27 décembre 2020 à 16:41 - Informatique
Texte soumis à la licence du site, sauf mention contraire
Rechercher plus d'informations

 

Commentaires

Evaluer l'article : * * * *

Ajouter un commentaire

Pseudo:
Site web: http://...
Message:
Avez-vous trouvé l'information que vous cherchiez ? Votre retour d'expérience sur le site nous intéresse.