2010-11-09 29 views
3

Oui, il s'agit d'une ancienne base de données (nous sommes en train de migrer). D'une façon ou d'une autre, phpMyAdmin permet à un utilisateur de créer une table avec un 'dedans'.Suppression d'une table dans MySQL (3.23.58) avec un caractère spécial dans le nom de table

nom: type_save »

Mais, je ne peux pas sembler laisser tomber cette table maintenant. J'ai essayé ceci de la ligne de commande:

mysql> drop table "type_save\'"; 
ERROR 1064: You have an error in your SQL syntax near '"type_save\'"' at line 1                   

mysql> drop table "type_save'"; 
ERROR 1064: You have an error in your SQL syntax near '"type_save'"' at line 1  


mysql> drop table `type_save'`; 
'>                      

Comment échappez-vous correctement à ceci?

Merci ...

+0

Même en incluant le nom de la table dans les guillemets, il ne l'effacera toujours pas. – bgarlock

Répondre

1

C'est MySQL 3.x, donc c'est très probable MyISAM (ou même ISAM). Puisque la façon normale de supprimer la table ne fonctionne pas (puisque vous dites qu'il bloque le serveur), et si c'est MyISAM/ISAM, supprimez les fichiers .MYI, .MYD et .frm directement du système de fichiers, ou déplacez-les ailleurs si vous devez les conserver pour une raison quelconque. Ensuite, faites des tables de couleur. Vous n'avez même pas besoin d'éteindre le serveur (au moins sous Unix, sous Windows le fichier peut être utilisé et Windows ne peut pas vous permettre de le supprimer.

Ne le faites pas si c'est InnoDB, seulement ISAM ou MyISAM.

Si c'est InnoDB, je crains que vous ayez une décharge/rechargement dans votre futur.

Et avoir des sauvegardes, bien sûr. Toujours avoir des sauvegardes.

+0

Eh bien, j'ai trouvé une solution en faisant un 'mysqldump' de cette base de données, entrer et éditer le fichier sql et supprimer tout ce qui concerne table, en enregistrant le vidage sql, supprimez le db et réimportez le vidage sql. Il a également fait baisser la base de données quand j'ai laissé tomber le db que cette table est dedans, ainsi j'ai dû recommencer mysql, mais au moins je me suis débarrassé de lui! – bgarlock

+0

Oh, et c'était une table InnoDB, donc je ne pouvais pas utiliser cette astuce MyISAM de supprimer les fichiers du système de fichiers - Je l'ai fait plusieurs fois :-) – bgarlock

+0

@Bruce: Que mysqldump que vous avez fait est ce que je voulais dire par hadh «Vider/recharger dans votre avenir». J'aurais dû être plus clair à ce sujet, je suppose. – derobert

5

Essayez ceci:

mysql> drop table `type_save'`; 

Note: "mysql>" est que l'invite de commande.

Le caractère est `(inverser l'apostrophe ou la citation simple de gauche).

+0

mysql> drop table 'type_save''; '> – bgarlock

+0

Désolé - cela n'a pas fonctionné – bgarlock

8

Selon Does MySQL allows to create database with dot? vous utilisez pour citer le contre-apostrophes nom, comme dans

drop table `type_save'` 

Essayez cela et voir si ça aide.

+0

Merci, j'ai essayé cela et il ne voit pas, au travail. Si nous essayons d'utiliser phpMyAdmin, nous plantons tout le db: – bgarlock

+0

Essayant d'obtenir des variables. Certains pointeurs peuvent être invalides et provoquer l'annulation de la sauvegarde ... thd-> requête à 0x89d68f0 = DROP TABLE 'type_save'' thd-> thread_id = 45115 – bgarlock

+0

Ces commentaires ne montrent pas le bactick correctement, mais ils étaient dans la copie/coller à cette zone de texte. – bgarlock