JeuWeb - Crée ton jeu par navigateur
Impossible de supprimer quelques tables de la BDD - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Impossible de supprimer quelques tables de la BDD (/showthread.php?tid=4278)

Pages : 1 2


Impossible de supprimer quelques tables de la BDD - P0ulp0r - 14-08-2009

Voilà, aujourd'hui j'arrive sur mon projet et il m'indique des erreurs pour certaines tables.

Il me dit que l'interclassement est utilisé pour plusieurs tables.
Depuis il met impossible de les supprimer, ni de les modifier.

Code PHP :
<?php 
#1051 - Unknown table 'tarifs'

Pourtant elles sont bien dans la base de données.
Si je veux créer une base de données du meme nom, cela me répond :
Code PHP :
<?php 
MySQL a répondu
:
#1050 - Table 'tarifs' already exists

Même le drop cascade en marche pas :/
Code PHP :
<?php 
DROP table tarifs cascade

Bref impossible de virer ces #%§$?@\ tables de ma bdd mysql.

Je viens de trouver un lien sur google ou une personne à le meme problème, mais personne ne lui apporte de réponse :
http://forum.ovh.com/showthread.php?t=15705


Donc si quelqu'un sait comment faire, merci d'avance !


RE: Impossible de supprimer quelques tables de la BDD - Ekilio - 14-08-2009

La dernière fois que j'ai vu ça, c'était un problème à la con d'encodage : la table s'appellait bien "machin" mais le "i" était encodé avec un caractère bizarre qui faisait que dans l'affichage (phpmyadmin) c'était bien affiché, mais dans le moteur de stoquage non, et phpmyadmin le supportait pas. D'autant qu'ovh propose un phpmyadmin assez ancien.

Essayes de changer l'interclassement de ta table ; et essayes de la renommer. Si tu n'y arrives pas il faudra tenter de passer par un script php pour faire ça, mais c'est moins pratique.


RE: Impossible de supprimer quelques tables de la BDD - pascal - 14-08-2009

au hasard et en vrac :
- supprimer les données présentes dans les tables
- vérifier les relations entre tables, les supprimer
- renommer les tables, puis les supprimer
- vérifier les droits de l'utilisateur de la DB

A+

Pascal


RE: Impossible de supprimer quelques tables de la BDD - P0ulp0r - 14-08-2009

Oui je veux bien essayer de modifier les noms (table ou champs) et d'autre opérations dessus. Mais dès que j'essaye j'ai cette erreur :
Code PHP :
<?php 
MySQL a répondu
:
#1146 - Table 'queven.tarifs' doesn't exist

Donc impossible d'effectuer une quelconque opération dessus :/


RE: Impossible de supprimer quelques tables de la BDD - Anthor - 14-08-2009

Et que te donne un SHOW TABLE STATUS ?


RE: Impossible de supprimer quelques tables de la BDD - Ekilio - 14-08-2009

Tu peux tenter un truc qui peut potentiellement marcher... Je te suggère tout de même vivement de sauvegarder avant.

D'abord, fait la liste des tables que tu ne veux pas supprimer. Ensuite, execute cette requête dans phpmyadmin :

Code :
CREATE PROCEDURE suppression()
BEGIN
SELECT @table := table_name FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = 'db_name' AND table_name NOT IN ('table_1', 'table_2') LIMIT 1;
SET @sql = CONCAT('DROP TABLE ', @table);
PREPARE stmt FROM @sql ;
EXECUTE stmt ;
DEALLOCATE PREPARE stmt ;
END

Dans cette requête, tu remplaces db_name par le nom de ta base (seconde ligne, dans le select) et table_1, table_2 par la liste des tables que tu ne veux pas supprimer.

Que fait cette requête ? Elle créé dans le serveur SQL une nouvelle fonction qui va supprimer une table de celles que tu veux supprimer. Ca ne les supprime qu'une par une. Pour lancer cette fonction, tu fais :

Code :
CALL suppression();

Et tu fais cette requête-là tant qu'il te reste des tables à supprimer. Ensuite, pour alléger le serveur tu vires la procédure :

Code :
DROP PROCEDURE suppression();

Et normalement ça devrait supprimer toutes les tables que tu ne veux pas. Mais fait un dump avant de tester !


RE: Impossible de supprimer quelques tables de la BDD - P0ulp0r - 14-08-2009

(14-08-2009, 10:58 AM)Anthor a écrit : Et que te donne un SHOW TABLE STATUS ?

Voilà ce que cela donne :
Code PHP :
<?php 
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
tarifs NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL Table
'queven.tarifs' doesn't exist

Sinon Ekilio je vais essayer ta méthode. Toute facon j'ai drop toutes les autres tables et j'ai fait une sauvegarde ^^


RE: Impossible de supprimer quelques tables de la BDD - Anthor - 14-08-2009

Bizarre comme sortie. Je pense tout simplement que tes fichiers de base de données sont corrompus, et qu'il n'y a pas de solutions.
Supprimer le serveur MySQL et le réinstaller.

Normalement tes colonnes ne devraient pas être nulles.


RE: Impossible de supprimer quelques tables de la BDD - NicoMSEvent - 14-08-2009

j'ai un autre probleme avec mysql... j'avais créer (par inadvertance) des tables avec le format "innodb". Le probleme, pas vue dans phpmyadmin, pourtant le compte était bon (manquait juste le nom de la table dans le menu a gauche). Comment j'ai résolu ça? j'ai supprimé les fichiers correspondant a ces table dans le répertoire "data" de mysql...


RE: Impossible de supprimer quelques tables de la BDD - Ekilio - 15-08-2009

Supprimer juste les fichier est généralement une mauvaise idée, car MySQL possède une table interne (Information_schema) qui référencie ses tables, et donc les virer est problématique en général. Et puis c'est tellement plus simple de changer le format de la table ^^'

Par contre comment réparer ça, aucune idée ^^' Je vais chercher un peu si je vois un truc