2010-01-05 4 views
8

J'ai réussi à corrompre (ou quelque chose) la table 'sessions' dans un mysql db que j'ai (qui est appelé "e_learning_resource_prelive"). Ce ne serait pas un problème normalement car je pourrais juste retourner à un vidage de sauvegarde de la DB. Cependant, la table corrompue semble me arrêter de supprimer la base de données:Drop table vissée dans Mysql db

> mysqladmin -u root drop e_learning_resource_prelive 
Dropping the database is potentially a very bad thing to do. 
Any data stored in the database will be destroyed. 

Do you really want to drop the 'e_learning_resource_prelive' database [y/N] y 
mysqladmin: DROP DATABASE e_learning_resource_prelive failed; 
error: 'Unknown table 'sessions'' 

Quand je vais dans la db la table des sessions apparaît dans show_tables (c'est le seul là-bas, la chute de mysqladmin supprimé le reste), mais je ne peut pas le laisser tomber:

mysql> show tables; 
+---------------------------------------+ 
| Tables_in_e_learning_resource_prelive | 
+---------------------------------------+ 
| sessions        | 
+---------------------------------------+ 
1 row in set (0.00 sec) 

mysql> drop table sessions; 
ERROR 1051 (42S02): Unknown table 'sessions' 

Quelqu'un peut-il me dire comment je peux supprimer cette table, ou l'ensemble db? J'ai besoin de supprimer la base de données puis de la reconstruire à partir de ma sauvegarde.

Répondre

-1

Utilisez l'interface graphique. Il y a probablement un caractère non-très-imprimable dans le nom sessions.

Ou peut-être le fichier sous-jacent sur le système de fichiers at-il été supprimé? Si c'est le cas, essayez de créer un fichier vide nommé sessions.

+0

Merci wally mais le db est sur un serveur linux donc je ne serai pas capable d'exécuter des outils graphiques pour le regarder, je pense. –

7

Compris, semble assez évident maintenant. Les dbs ont tous un dossier qui peut être supprimé comme n'importe quoi d'autre.

sudo rm -r/var/lib/mysql/e_learning_resource_prelive

Merci quelqu'un qui avait l'air, de toute façon :) max

+0

fait juste cela pour mon site drupal ... j'ai essayé toutes les autres méthodes et cela n'a pas fonctionné. il suffit de supprimer le fichier était simple. Je voudrais savoir plus tôt ... –

1

session est un mot-clé réservé (http://developer.mimer.com/validator/sql-reserved-words.tml), je pense que c'est pourquoi votre base de données est corrompu.

J'ai eu le même problème en utilisant un mot clé réservé (references dans mon cas), et j'ai également eu le problème que renommer, supprimer ou tronquer la table donnait une erreur SQL.

Pour résoudre ce problème, utilisez des caractères en retrait dans la requête alter table.

ALTER TABLE `session` RENAME TO newname 

De cette façon, la requête n'échouera pas, et vos données sont toujours là (dieu merci!). J'espère que quelqu'un trouve cela utile!