Sous W7 64bits, wampserver 2.5, mysql 5.6.17, apache 2.4.9 (win32) php 5.5.12 et phpmyadmin 4.1.14:
Avec un site (en local) basé sur Drupal (tables innoDb), depuis quelques jours, le service mysql stoppe, avec ce message dans le fichier log: " Error: tablespace id is 312 in the data dictionary but in file .\xxx\cache_admin_menu.ibd it is 310! Assertion failure in thread 8184 in file fil0fil.cc line 796."
Lorsque je tente de visualiser la table en question qui est bien listée dans phpmyadmin,, un message d'erreur m'indique que celle-ci n'existe pas !
Après arrêt/relance du service, et navigation dans le site, mysql redevient "stable", même si le message suivant apparaît dans la log: "Failed to find tablespace for table '"xxx"."cache_admin_menu"' in the cache. Attempting to load the tablespace with space id 312. 6968 [ERROR] InnoDB: In file '.\xxx\cache_admin_menu.ibd', tablespace id and flags are 310 and 0, but in the InnoDB data dictionary they are 312 and 0. Could not find a valid tablespace file for 'xxx/cache_admin_menu'.
Que puis-je faire pour palier à ce problème qui, je l'espère ne se reproduira pas en production ?
> Que puis-je faire pour palier à ce problème Restaurer votre sauvegarde de la base de données. Ne JAMAIS arrêter Windows sans avoir, au préalable quitté Wampserver, donc arrêté MySQL, donc écrit le cache InnoDB.
> qui, je l'espère ne se reproduira pas en production ? Wampserver est un serveur de développement, pas de production.
Restauration du fichier impossible, car je dois supprimer le tablespace avant. Ce que je tente de faire par un DROP TABLESPACE 'matable'; mais qui me provoque une erreur 1478 ( Table storage engine 'InnoDB' does not support the create option 'TABLESPACE or LOGFILE GROUP' ).
Je lis par-ci par-là que la solution serait de flinguer la base, et de la recréer. Est-ce pérenne ?
> Je lis par-ci par-là que la solution serait de flinguer la base, et de la recréer. Est-ce pérenne ? N'ayant jamais été confronté à ce problème, je n'en sais rien. Néanmoins, ce que je tenterais : - Quitter Wampserver (Pour arrêter MySQL normalement) - Sauvegarder totalement la branche wamp/bin/mysql/ de manière à pouvoir revenir en arrière. - Lancer Wampserver et PhpMyAdmin - Détruire la base - Quitter Wampserver - Lancer Wampserver - Vérifier que MySQL fonctionne correctement. - Créer la base et restaurer la sauvegarde.
Si votre table est corrompue, vous devez la reconstruire. --> [dev.mysql.com]
@+
---------------------------------------------------------------------------------------------------------------------------------------------------------------- Mon site : [www.jcz.fr]
Non, ce n'est pas la bonne méthode. Imaginez un seul instant que vous êtes en production. Croyez-vous que pour résoudre ce genre de problème, il suffit de détruire les fichiers physiques et de tout réinstaller ? Perte de temps, refaire les mises à jour de vos tables entre la dernière sauvegarde et maintenant. Sans compté que durant ce laps de temps qui peut-être très long, plus personne ne peut intervenir sur votre base.
@+
---------------------------------------------------------------------------------------------------------------------------------------------------------------- Mon site : [www.jcz.fr]