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.

-1voto

avibrazil Points 11

La seule façon dont ça a marché pour moi était :

  1. Créer un tableau similaire
  2. Copiez les fichiers .frm et .idb de la nouvelle table similaire au nom de la table corrompue.
  3. Fixer les permissions
  4. Redémarrer MariaDB
  5. Abandonner la table corrompue

-1voto

SoCix Points 1386

Merci #DangerDave cela a résolu mon problème sur Magento 2, et voici comment j'ai fait

Je suis sur un vps

root@myvps [~]# cd /var/lib/mysql/mydatabasename/

root@myvps [~]# ls

vérifier les tables qui n'ont pas de fichier .frm (seulement .idb) et les supprimer,

rm customer_grid_flat.ibd

Le système va régénérer les tables après avoir exécuté la commande index:reindex.

-1voto

dancl Points 380

Dans le cas de Homebrew, le répertoire pour les fichiers de données est /usr/local/var/mysql

pour voir quel fichier my.cnf est utilisé voici les emplacements de recherche de mon environnement /etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf

Pour corriger cette erreur, j'ai donc procédé comme suit

mysqladmin -u root shutdown
rm /usr/local/var/mysql/<dbname>/problemtablename.ibd

Note : dans mon cas, je ne me suis pas soucié des données car il s'agit d'une configuration de développement, probablement parce que j'ai restauré mon ordinateur portable avec timemachine.

-2voto

F5 Buddy Points 356

Veuillez DÉCHARGER le tablespace avant d'IMPORTER

J'ai le même problème, la solution est la suivante

  1. Tout d'abord, vous devez supprimer le nom de votre base de données. Si votre base de données n'est pas supprimée, vous devez m'envoyer un message. Pour le système Windows, votre répertoire sera C:/xampp/mysql/data/yourdabasefolder supprimez "yourdabasefolder".

  2. Encore une fois, vous devez créer une nouvelle base de données et importer votre ancien fichier sql. Cela va fonctionner

Gracias

-2voto

GarethReid Points 79

J'ai dû localiser mon répertoire de données MySQL :

SHOW VARIABLES WHERE Variable_Name LIKE "%dir"

Puis forcez la suppression de cette base de données :

sudo rm -rf

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