Tables MySQL restaurées => messages d'erreur

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [Problème] Tables MySQL restaurées => messages d'erreur

    Bonjour à tous, mon problème ne concerne pas directement joomla mais peut-être quelqu'un s'est il déjà trouvé confronté à cela et pourra m'aider. Voilà : je travaille avec Wampserver. J'ai voulu ajouter une version de PHP pour pouvoir installer Akeeba Backup et du coup ça l'a planté. J'ai donc voulu le réinstaller, j'ai sauvegardé le répertoire www ... et j'ai oublié les bdd ... Dès que je m'en suis rendue compte, j'ai été rechercher les fichiers avec un outil de récupération. J'ai donc récupéré une série de fichiers *frm, *MYD et *MYl. Les plus importants pour moi étant les tables menu, content et products pour Virtuemart.
    J'ai remonté le site à partir d'une sauvegarde que j'avais mais où il manque plein de choses.
    J'ai donc créé une nouvelle bdd et dans le dossier data j'ai mis tous les fichiers qui avaient les 3 extensions pour voir ce que cela donnait.
    Ok, j'ai récupéré les articles (ouf !).
    Mais pour la table menu, quand je souhaite l'afficher, ça me met Erreur requête SQL show full fields from 'menu' MySQL a répondu #130 Incorrect file format 'menu'.

    J'ai alors supprimé les 3 fichiers, j'ai été chercher la table menu dans la base correspondant au site récupéré à partir du backup, je l'ai importée dans PhpMyAdmin, puis dans le dossier data, j'ai remplacé les fichiers menu.MYD et menu.MYl par ceux que j'aimerais utiliser.
    Mais cela me fait la même erreur. Ce qui voudrait dire que le fichier .frm est ok mais que ce serait un des deux autres ?

    J'aimerais également essayer de récupérer les tables à qui il manque le fichier .frm. est-ce possible ?

    Est-ce qu'une bonne âme aurait des connaissances approfondies en MySQL pour m'aider à récupérer ces données ? Je lui en vouerais une reconnaissance éternelle !
    Merci d'avance

  • #2
    Re : Tables MySQL restaurées => messages d'erreur

    Bonjour,

    Comment transformer une simple erreur en désastre programmé...

    En usage normal, on ne s'amuse JAMAIS à simplement copier ou déplacer les tables binaires de MySQL, et ce pour plusieurs raisons.
    Pour sauvegarder un base, 2 méthodes : mysqldump et mysqlhotcopy.
    mysqldump génère un dump SQL standard, au format source SQL.
    mysqlhotcopy génère un dump binaire sous forme de snapshot sécurisé, et cette copie binaire peut elle être déplacée.

    MySQL ayant plusieurs moteurs de stockage (Storage Engines): MyISAM, InnoDB et MEMORY étant les plus utilisés.
    MyISAM a bien .frm, .MYD et .MYI en extension, certains autre sformat sn'ont que .frm, le stockage (InnoDB) étant réalisé dans un autre container, ibdataXX (XX étant un indice numérique du conteneur) et iblogfileXX qui contient le moteur d'historique. Les formats binaires InnoDB dépendent de la version du moteur, des paramètres InnoDB définis par my.cnf, etc.

    Et dans les tables MyISAM, il est possible su'un index soit crashé, ou que le .frm soit en décalage par rapport au conteneur MYD.

    Dans ces cas là, il faut utiliser les outils (en ligne de commande) pour tenter de récupérer les tables correctement.

    Commencer, une fois la base montée, par utiliser la commande
    Code:
    REPAIR TABLE nom_table;
    pour tenter une réparation des index automatique si les problèmes ne sont pas structurels.

    Si la version de MySQL sur laquelle les fichiers ont été transférés n'est pas de la même version que la version originelle, utiliser également les commandes système
    Code:
    mysql_upgrade
    pour réaliser les opérations de corrélation binaires et les modifications de schémas entre versions.
    Code:
    mysqlcheck
    pour vérifier les tables MyISAM, les réparer, optimiser, etc.
    Code:
    myisamcheck
    pour vérifier et valider les binaires ISAM contenu dans MYD et MYI
    Code:
    innochecksum
    pour vérifier et valider un conteneur InnoDB
    Pour chacune de ces commandes, lire la (très longue) page de manuel, une mauvaise utilisation de certaines commandes pouvant détruire définitivement la table ou la base de données entière.
    Pas de demande de support par MP.
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

    Commentaire


    • #3
      Re : Tables MySQL restaurées => messages d'erreur

      Merci pour ton attention ! Crois bien que je me suis baffée et gifflée et injuriée quand j'ai constaté que j'avais récupéré les dossiers et pas les tables des 2 sites que j'avais en cours ! Mais basta, c'est comme ça ...

      Je n'ai jamais utilisé la console MySQL. Alors question : il me demande le mdp, ok.
      Je rentre la commande je fais Enter, il passe à la ligne avec juste une petite flèche.
      J'imagine que je dois lui dire dans quelle BDD il faut aller, mais je n'ai pas trouvé comment.
      Peux-tu m'indiquer la piste à suivre ?
      J'ai comparé le fichier virtuemart products.frm du site réinstallé à partir de la sauvegarde et celui que j'ai récupéré : le premier fait 10 Ko, l'autre 70. Je croyais que ce fichier n'était plus modifié après la création des tables. Cela voudrait-il dire que ce n'est pas la même version de VM entre les 2 ? Ce qui est de l'ordre du possible, la sauvegarde a peut-être été faite avant un passage à J!2.5 et le VM qui va avec, mais ça, je ne m'en rappelle plus ...
      M'enfin, cela ne change rien pour que la table ne présente pas d'erreur dans PhpMyadmin

      Commentaire


      • #4
        Re : Tables MySQL restaurées => messages d'erreur

        Utiliser mysql en ligne de commande ne sera utile que pour les commandes de type "REPAIR TABLE" et pas grand chose d'autre si tu ne maîtrise pas le langage SQL.

        La syntaxe de base est mysql -u nom_utilisateur -p mot_de_passe nom_de_la_base
        ou
        mysql -u nom_utilisateur -p mot_de_passe
        puis dans le shell SQL, taper la commande
        Code:
        USE nom_de_la_base;
        Toutes les commandes SQL se treminent par un point virgule et Entrée..

        Les autres utilitaires genre mysql_upgrade, etc, ont tous une option --help qui donne une aide rapide sur leur utilisation.

        Mais la lecture des pages du manuel de MySQL les concernant n'est absolument pas une option, mais une obligation. http://dev.mysql.com/doc/refman/5.5/en/programs.html

        Quand à la taille du .frm, il dépend des champs, de leur type, des options, commentaires de champs, leur nombre, etc.
        Et pour Virtuemart, les tables de la V1.1 sont incompatibles avec VM V2, et n'ont plus la même structure.
        La table présentant des erreurs a soit la définition d'index KO, soit le FRM d'une version avec le MYD ou MYI d'une autre version, donc incohérence totale, soit le .frm est un peu cabossé et invalide.
        Pas de demande de support par MP.
        S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

        Commentaire


        • #5
          Re : Tables MySQL restaurées => messages d'erreur

          T'inquiète j'ai le manuel devant les yeux depuis plusieurs jours ... mais de là à tout capter ...
          1) est-ce que ces commandes fonctionnent à partir de la console MySQL que l'on trouve dans WampServer ? Car lorsque j'entre myisamcheck j'ai juste en résultat une flèche

          2) quoiqu'il en soit de la version de VM, ce n'est pas cela qui fait que je ne peux pas ouvrir la table produits :-( car j'ai créé une bdd spécialement pour essayer de récupérer les tables puis, si affinités, les injecter dans la bdd du site. Le .frm est bien celui qui va avec le MYD et le MYI

          Voilà, donc j'ai lancé la console via PHPMyadmin, elle me demande mon mdp, ok j'arrive donc à mysql>
          Si je tape USE nom_de_la_base, il me dit OK base changed.
          Si je tape myisamcheck il met une flèche.
          Et je n'ai rien d'autre.

          A partir de PHPMyAdmin j'ai déjà tenté de faire une réparation, mais la réponse est CORRUPT.

          Je pourrais tenter une install d'un Joomla 2.5 avec la version VM qui va avec et récupérer le .frm de la table produits, peut-être correspondra-t-elle ...
          A première vue, l'erreur est dans le .frm pas dans le MYD vu le message qui s'affiche.

          On ne le dira jamais assez ... faire des backups ... pfff

          Commentaire


          • #6
            Re : Tables MySQL restaurées => messages d'erreur

            Non, je ne pense pas. Bien qu eje ne soi spas sous windows et qu eje n'utilise donc pas wampserver, toutes les installations MySQL ont pas mal de choses en commun.

            La console MySQL est simplement la commande mysql -u xxx -p, donc un accès en ligne de commande aux commandes et requêtes SQL.

            Tous les my* sont des programmes à exécuter dans une "boite DOS" (il me semble que c'est le nom sous Windows, terminal sous Linux ou MacOS).

            Si anvec pgpMyAdmin, la commande REPAIR renvioe corrupt, ça indique que la réparation d ece type de corruption (le frm) ne peut en aucun cas être réparée par le mode automatique.
            Tu vas devoir apprendre à utiliser les outils myisam et compagnie.
            Pas de demande de support par MP.
            S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

            Commentaire


            • #7
              Re : Tables MySQL restaurées => messages d'erreur

              Bon, ben je vais m'y mettre mais déjà ça coince.
              J'ai lancé la commande repair menu après avoir lancé mysql ... et j'ai toujours la même ->
              Rien ne se passe.
              Qu'y a-t-il comme autres commandes pour le faire à la mano ?


              Pour la table menu, j'ai donc l'erreur (dans PHPMyAdmin)
              Code:
              #130 - Incorrect file format 'ana_menu'
              Pour la table vm_products, l'erreur est différente quand je veux l'afficher
              Code:
              #1033 - Incorrect information in file: '.\anasta_recup\ana_virtuemart_products.frm'
              J'ai vu quelque part d'essayer en supprimant les fichiers .frm, .MYD et .MYI du directory, puis de recréer la table et ensuite de ne recopier que les fichiers .MYD et .MYI. Mais je suppose que pour faire cela, il faut connaître les champs et la config de la table ? Y a-t-il moyen de reconstruire le .frm ?

              Pour les autres tables pour lesquelles il y avait bien les 3 fichiers, certaines fonctionnent nickel.

              Merci pour les pistes que tu m'as déjà données ! Et si tu en as d'autres ...

              Commentaire


              • #8
                Re : Tables MySQL restaurées => messages d'erreur

                J'ai vu quelque part d'essayer en supprimant les fichiers .frm, .MYD et .MYI du directory, puis de recréer la table et ensuite de ne recopier que les fichiers .MYD et .MYI. Mais je suppose que pour faire cela, il faut connaître les champs et la config de la table ? Y a-t-il moyen de reconstruire le .frm ?
                Pour jouer à ça, il faut connaître la structure exacte de la table, au bit près. Il n'existe aucun moyen pour reconstruire de cette manière un .frm altéré, sauf à recréer la table en partant du source originel EXACT (donc pour Virtuemart 1.1, avec tous les hacks qui ont pu être appliqués...)

                Et pour le menu, le incorrect file format indique certainement que cette table est de type InnoDB, mais qu'il manque le innodata associé, donc qu'il est impossible à MySQL de s'y retrouver (un fichier null ou vide pour InnoDB est un format de fichier incorrect).
                Pas de demande de support par MP.
                S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

                Commentaire


                • #9
                  Re : Tables MySQL restaurées => messages d'erreur

                  Merci pour tes réponses. Pour le menu, je ne pense pas car la bdd a été créée lors de l'install de Joomla, de type MYSQL. Je ne vois pas comment certaines tables seraient de type InnoDB ? Mais peut-être me trompe-je ?

                  Commentaire

                  Annonce

                  Réduire
                  Aucune annonce pour le moment.

                  Partenaire de l'association

                  Réduire

                  Hébergeur Web PlanetHoster
                  Travaille ...
                  X