Je lance une sauvegarde quotidienne mysqldump de la base de données de production (mysql version 5.1.66):
mysqldump --user=username --password=secret -C -e --create-options --hex-blob --net_buffer_length=5000 databasename > file
Je fais aussi une restauration quotidienne de cette base de données sur ma machine de développement (mysql version 5.6.12)
mysql --user=username --password=secret databasename < file
J'ai l'erreur: ERREUR 1813 (HY000) à la ligne 25: l'espace de table pour la table 'databasename
.tablename
' existe. S'il vous plaît, jetez l'espace de table avant IMPORT.
Ma lecture indique que c’est parce que la base de données mysql innodb requiert la commande:
ALTER TABLE tbl_name DISCARD TABLESPACE;
à exécuter avant que la table ne soit supprimée - il semble que l’abandon de la table ne soit pas suffisant pour se débarrasser de ses index . (mon serveur de développement utilise l’option innodb_file_per_table)
Je ne veux pas utiliser l'option 'remplacer' car je pourrais potentiellement avoir des données dans ma base de développement qui ont été supprimées de la base de production.
btw après l'erreur, les tables ne sont pas lisibles, mais le redémarrage de mysqld le corrige.
La question est donc la suivante: existe-t-il une option de vidage mysql permettant de résoudre ce problème, ou existe-t-il un autre moyen d'importer les données permettant d'éviter l'erreur?
merci d'avance pour la lecture.
On dirait que vous avez un tablename.ibd mais pas un tablename.frm.
Vérifier:
cd/var/lib/mysql/nom_bdd
Recherchez le nom de la table qui donne l'erreur.
nom de la table. *
Vous devriez voir deux fichiers:
tablename.ibd tablename.frm
Mais je suppose que vous ne voyez pas
nom_table.ibd
Pour vous réparer, vous avez quelques options:
--add-drop-database
Également:
J'ai trouvé que le moyen le plus simple d'éviter ce problème était de modifier manuellement le vidage de la base de données phpmyadmin et de modifier/changer la table qui posait des problèmes pour autre chose que INNODB
. J'ai changé la table des problèmes en ENGINE=MyISAM
et le tour est joué. L'importation a fonctionné.
CREATE TABLE IF NOT EXISTS `home3_acymailing_tag` (
`tagid` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(250) NOT NULL,
`userid` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`tagid`),
KEY `useridindex` (`userid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
J'ai également rencontré ce problème lors de la suppression d'un schéma et de sa création. J'ai surmonté ce problème en allant à C:\ProgramData\MySQL\MySQL Server 5.6\data\my_database_name
et en supprimant les tables restantes de la création de la base de données précédente. Vous pouvez également supprimer toute la base de données, si vous le souhaitez.
si vous utilisez XAMPP alors d'abord ("stop") MySQL Ensuite, allez dans C:\xampp\mysql\data\dnb où dans mon cas dnb est le dossier de mon nom de base de données .. donc ouvrez-le et supprimez le fichier .ibd. Par conséquent, vous ne pouvez le supprimer que lorsque vous avez déjà arrêté MYsql . puis accédez à phpmyadmin 1 cliquez sur phpmyadmin . 2 cliquez sur les bases de données qui apparaissent ci-dessous (server.127.0.0.1 dans case my be change) 3 puis vérifiez votre base de données que vous voulez supprimer, puis cliquez sur drop . 4 vous pouvez alors créer une base de données avec le même nom et importer votre base de données avec succès . ici vous pouvez voir déposer la base de données de phpmyadmin