Bonjour,
Après un redémarrage docker d'hier soir, je détecte une corruption dans une de mes tables
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
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
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
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
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.
Partager