Mysql
 sql >> Base de données >  >> RDS >> Mysql

Erreur :l'espace table pour la table xxx existe. Veuillez SUPPRIMER l'espace de table avant l'IMPORTATION

Un peu tard ici, mais généralement j'ai vu ce problème se produire lorsque vous obtenez une erreur 'tablespace full' lors de l'exécution en mode 'innodb_file_per_table'. Sans entrer dans trop de détails (plus ici ), l'espace de table du serveur de base de données est défini par le paramètre innodb_data_file_path et par défaut est plutôt petit. Même agrandi, le "tablespace plein" peut toujours se produire avec des requêtes plus volumineuses et autres (beaucoup de "choses" non liées à la table y sont stockées, journaux d'annulation, caches, etc.).

Quoi qu'il en soit, j'ai trouvé que si vous regardez dans le répertoire du système d'exploitation où sont stockés les fichiers par table, /var/lib/mysql par défaut sur OSX, /usr/local/var/mysql avec homebrew iirc, vous trouverez un fichier orphelin tablename.ibd sans son compagnon normal tablename.frm. Si vous déplacez ce fichier .ibd vers un emplacement temporaire sûr (juste pour être sûr), cela devrait résoudre le problème.

$ ls /var/lib/mysql

table1.frm
table1.idb
table2.frm
table2.idb
table3.idb <- problem table, no table3.frm
table4.frm
table4.idb

$ mkdir /tmp/mysql_orphans
$ mv /var/lib/mysql/table3.ibd /tmp/mysql_orphans/

Une mise en garde cependant, assurez-vous de ce qui cause le problème à l'origine, par ex. requête de longue durée, table verrouillée, etc... a été effacée. Sinon, vous vous retrouvez avec un autre fichier .ibd orphelin lorsque vous essayez une deuxième fois.