156 votes

Erreur : Le tablespace pour la table xxx existe. Veuillez supprimer le tablespace avant d'importer.

Je suis assez novice en matière de MySQL et je rencontre une erreur assez intéressante pour laquelle je ne trouve aucune aide via Google et la recherche stackoverflow.

J'utilise un serveur local de MySQL 5.6.10 sur MacOS 10.8.3 et je gère ma base de données via Navicat essentials for MySQL.

L'erreur que je rencontre est qu'après avoir exécuté et géré ma base de données sans problème pendant quelques jours/semaines, quelque chose se déclenche pour supprimer (de manière incomplète, semble-t-il) certaines des tables que j'ai créées à l'aide de requêtes dans Navicat.

Lorsque j'essaie d'exécuter des requêtes à l'aide de ces tables, Navicat m'avertit que la table en question n'existe pas. Jusqu'ici tout va bien - voici la partie la plus intéressante :

Lorsque j'essaie de CRÉER la table, par exemple nommée "temp", qui existait auparavant, j'obtiens le message d'erreur suivant :

Error : Tablespace for table '`database`.`temp`' exists. Please DISCARD the tablespace before IMPORT.

Cependant, si j'essaie de supprimer la table, ou si j'essaie de supprimer le tablespace pour cette table, en utilisant la fonction

DROP TABLE temp;
ALTER TABLE temp DISCARD TABLESPACE;

Je reçois les messages d'erreur suivants :

Error : Unknown table 'database.temp'
Error : Table 'database.temp' doesn't exist

Cela signifie donc qu'il m'est conseillé de supprimer l'espace de table, mais lorsque j'essaie de le faire, la table n'existe pas. Est-il possible qu'il y ait une sorte de vestige de cette table à un autre endroit où la requête DISCARD n'est pas vérifiée ? Et quelqu'un a-t-il une idée de ce qui pourrait déclencher tout cela - de manière totalement aléatoire, semble-t-il ?

Comme je l'ai dit, je suis novice en la matière et je ne sais pas grand-chose. Je pense que le redémarrage de mon ordinateur portable, c'est-à-dire la réinitialisation de mon serveur MySQL local, ou peut-être les droits d'accès de l'utilisateur pourraient avoir un rapport avec ce problème, mais je ne fais que formuler des hypothèses.

0voto

user3524152 Points 1

Si vous avez un autre serveur avec une bonne version de la même table, vous pouvez faire une copie (table_copy), transférer la table_copy sur le serveur problématique. Ensuite, supprimez la table problématique et renommez table_copy en table.

0voto

Yura Galavay Points 218

Pour moi, cela m'a aidé d'aller dans le répertoire MYSQL DATA sous /var/lib/mysql/{nom_de_bande} (linux) et déposez {nom_table}.ibd qui était le même que le nom du dossier.

-1voto

XMaster Points 53

Je n'ai fait que supprimer mon ancienne base de données située dans mon localhost directement depuis wamp, arrêter tous les services, aller dans wamp/bin/mysql/mysql[version]/data et j'ai trouvé la base de données avec des problèmes, je l'ai supprimée et redémarrer wamp tous les services, créer à nouveau votre base de données et c'est fait, maintenant vous pouvez importer vos tables,

-1voto

Glen Solsberry Points 4756

La façon que j'ai trouvée pour "résoudre" ce problème est assez ennuyeuse, mais il existe un script qui s'en occupe.

Essentiellement, vous avez besoin de la ibdata1 y ib_logfile* (ils contiennent les mappings des clés étrangères, entre autres choses). Les seuls sûr La meilleure façon de procéder est d'exporter toutes vos bases de données, d'arrêter mysql, de supprimer les fichiers, de démarrer mysql, puis d'importer les fichiers.

Le script qui permet de résoudre ce problème est le suivant https://github.com/uberhacker/shrink-ibdata1 même si l'objectif déclaré de ce script est différent. hace résoudre le problème.

-1voto

joras Points 415

Vous pouvez exécuter la requête suivante en tant qu'utilisateur mysql Root

drop tablespace `tableName`

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X