首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >mysqldump还原错误:‘请在导入前丢弃表空间’

mysqldump还原错误:‘请在导入前丢弃表空间’
EN

Stack Overflow用户
提问于 2013-07-29 08:30:55
回答 3查看 86.8K关注 0票数 26

我对生产数据库(mysql版本5.1.66)运行每日备份mysqldump备份:

代码语言:javascript
复制
mysqldump --user=username --password=secret -C -e --create-options --hex-blob --net_buffer_length=5000 databasename > file

我还在我的开发机器(mysql版本5.6.12)上执行数据库的每日还原。

代码语言:javascript
复制
mysql --user=username --password=secret databasename < file

我在第25行得到错误: ERROR 1813 (HY000):表'databasename.tablename‘的表空间存在。请在导入前丢弃表空间。

我的阅读表明这是因为mysql innodb数据库需要命令:

代码语言:javascript
复制
 ALTER TABLE tbl_name DISCARD TABLESPACE;

在表被删除之前运行--删除表似乎不足以去除它的索引。(我的开发服务器使用innodb_file_per_table选项)

我不想使用'replace‘选项,因为我的开发数据库中可能有在生产数据库上被删除的数据。

顺便说一句,在错误之后,表是不可读的,但是重启mysqld可以修复它。

所以问题是,有没有任何mysql转储选项可以帮助解决这个问题,或者有没有其他方法可以导入数据来防止错误?

提前感谢您的阅读。

EN

回答 3

Stack Overflow用户

发布于 2016-12-16 22:07:48

我发现跳过这个问题的最简单方法是手动编辑phpmyadmin数据库转储,并将有问题的表编辑/更改为INNODB以外的其他表。我把问题表改成了ENGINE=MyISAM,瞧。导入成功。

代码语言:javascript
复制
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 ;
票数 12
EN

Stack Overflow用户

发布于 2014-12-15 18:12:08

我在删除模式并重新创建它时也遇到了这个问题。我通过访问C:\ProgramData\MySQL\MySQL Server 5.6\data\my_database_name并删除上一次创建数据库时留下的表来解决这个问题。如果愿意,您还可以删除整个数据库。

票数 2
EN

Stack Overflow用户

发布于 2016-01-21 07:15:13

如果您使用的是XAMPP,那么首先(“停止”) MySQL,然后转到C:\xampp\mysql\data\dnb,在我的例子中,dnb是我的数据库名称文件夹。因此,打开它并删除.ibd文件,因此您只能在已经停止MYsql时将其删除。然后转到phpmyadmin,单击phpmyadmin。2单击下面显示的数据库(在您的情况下,server.127.0.0.1可能会发生更改)3然后检查您要删除的数据库,并单击drop。4然后你可以创建同名的数据库并成功导入你的数据库。here you can see how you drop database from phpmyadmin

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17914446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档