IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration MySQL Discussion :

Corruption de table


Sujet :

Administration MySQL

  1. #1
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 222
    Points : 19 554
    Points
    19 554
    Billets dans le blog
    25
    Par défaut Corruption de table
    Bonjour,

    Après un redémarrage docker d'hier soir, je détecte une corruption dans une de mes tables

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     mysqlcheck  -u fadace -p -h mariadb-p01 -P 33041 --check mabase
    ...
    cpval.soc
    Error    : Table 'mabase.soc' doesn't exist in engine
    status   : Operation failed
    La base est là si je vais un show tables

    Les fichiers sont physiquement présents
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [root@mariadb-p01 cpval]# ll soc*
    -rw-r--r--. 1 systemd-bus-proxy ssh_keys   3858 Nov 25 12:02 soc.frm
    -rw-r--r--. 1 systemd-bus-proxy ssh_keys 114688 Nov 25 12:02 soc.ibd
    La restauration d'un fichier (et de la base complète) d'avant-hier ne résoud rien

    J'essaie de supprimer la table et ses fichiers

    Si je recrée la table, il me spécifie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ERROR 1050 (42S01): Table '`mabase`.`soc`' already exists
    Si j'essaie de la suppimer
    MariaDB [cpval]> drop table soc ;
    ERROR 1051 (42S02): Unknown table 'mabase.soc'

    La recréation a malgré tout ajouté un fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [root@mariadb-p01 mabase]# ls -l soc*
    -rw-rw----. 1 systemd-bus-proxy ssh_keys 65536 Nov 25 13:12 soc.ibd
    qui fait que si j'essaie d'importer, je reçois un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ERROR 1813 (HY000) at line 11: Tablespace for table '`cpval`.`soc`' exists. Please DISCARD the tablespace before IMPORT

    Si je remonte cette table sur un autre nom, aucun souci
    Si je renomme cette table sous un 3e nom, aucun souci : les fichiers ibd et frm sont renommés et la table aussi
    Si je renomme cette table a son nom d'origine :
    ERROR 1050 (42S01): Table './mabase/soc' already exists

    ... bien qu'aucun ficher soc.* n'existe plus

    Il doit forcément y avoir une corruption au niveau du catalogue car si je recrée la base from scratch (= je supprime la base et je la laisse recréer par le script SQL d'import), je me ramasse un mabase.soc already exists (sur une base donc créée par le script)
    Par contre, si je spécifie un autre nom pour la base dans le script, la création se passe sans encombre.
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 349
    Points : 439
    Points
    439
    Par défaut
    Salut,

    Je connais pas tres bien mysql! L'une des premieres etapes que je ferai, ca serait de remonter la base sur une nouvelle instance mysql! Ca te permettrait d'infirmer/confirmer si une corruption du catalogue est possible!

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Bonjour Fabien,

    En lisant ton problème, j'ai eu l'idée d'aller jeter un oeil dans la BDD mysql. J'y ai trouvé, dans la table "tables_priv" une ligne concernant une BDD que je n'ai plus sur ma machine.
    N'y aurait-il pas, dans la BDD MySQL, une info obsolète qui bloque la recréation de ta BDD ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 055
    Points
    19 055
    Par défaut
    Salut à tous.

    Citation Envoyé par champomy62
    Je connais pas très bien mysql!
    Il ne s'agit pas de MySql ici, mais de MariaDB.

    Citation Envoyé par Fabien Celaia
    La restauration d'un fichier (et de la base complète) d'avant-hier ne résout rien
    Pourquoi ? Est-ce à dire que le problème était déjà présent dans cette sauvegarde mais que vous ne l'avez pas remarqué ?

    Citation Envoyé par Fabien Celaia
    Si je renomme cette table à son nom d'origine :
    ERROR 1050 (42S01): Table './mabase/soc' already exists

    ... bien qu'aucun ficher soc.* n'existe plus
    Tant que la table mabase.soc est encore référencée dans MySql, vous ne pouvez pas créer cette table.

    Citation Envoyé par Fabien Celaia
    Il doit forcément y avoir une corruption au niveau du catalogue
    Pas du catalogue à proprement parlé mais dans le fichier ibdata1. C'est ce fichier qui a été corrompu et est la cause de votre problème !!!

    En principe, quand on fait une sauvegarde, en plus de la ou des bases de données, il faut aussi ajouter :
    --> my.ini
    --> ibdata1

    Avez-vous la possibilité de récupérer le fichier "ibdata1" par un autre moyen que votre dernière sauvegarde
    Disons il y a une semaine, voire un mois ? Si ce n'est pas possible, vous avez deux possibilités :

    1) vous devez réinstaller la même version MariaDB que celle que vous utilisez actuellement.
    Autrement dit, vous repartez d'un fichier "ibdata1" vierge.

    2) vous supprimez le fichier "ibdata1" qui va être recréé lors du prochain démarrage de MariaDB.

    Dans les deux cas, vous importez toutes les tables de votre base de données.
    Cela devrait résoudre votre problème.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

Discussions similaires

  1. Bug corruption de tables ~0²
    Par antoine78 dans le forum MySQL
    Réponses: 0
    Dernier message: 10/06/2009, 11h43
  2. Réparation table/entête endommagée
    Par tbesrour dans le forum Paradox
    Réponses: 15
    Dernier message: 27/11/2007, 10h42
  3. doclect.db corrupt index table header
    Par westpc dans le forum Paradox
    Réponses: 2
    Dernier message: 14/06/2007, 17h55
  4. mysqlcheck has found corrupt tables
    Par Rhineauféros dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 31/08/2005, 12h52
  5. [Comparatifs] Limites nombres tables et quantité de données
    Par benj63 dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 13/06/2002, 21h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo