【发布时间】:2013-07-28 16:14:42
【问题描述】:
我运行生产数据库的每日备份mysqldump备份(mysql版本5.1.66):
mysqldump --user=username --password=secret -C -e --create-options --hex-blob --net_buffer_length=5000 databasename > file
我还在我的开发机器(mysql 版本 5.6.12)上每天恢复该数据库
mysql --user=username --password=secret databasename < file
我得到错误:
第 25 行的错误 1813 (HY000):表 'databasename.tablename' 的表空间存在。请在 IMPORT 之前丢弃表空间。
我的阅读表明这是因为 mysql innodb 数据库需要命令:
ALTER TABLE tbl_name DISCARD TABLESPACE;
在删除表之前运行——删除表似乎不足以摆脱它的索引。 (我的开发服务器使用 innodb_file_per_table 选项)
我不想使用“替换”选项,因为我的开发数据库中可能存在已在生产数据库中删除的数据。
顺便说一句,出现错误后,表不可读,但重新启动 mysqld 可以修复它。
所以问题是,是否有任何 mysql 转储选项可以帮助解决此问题,或者是否有其他方法可以导入数据来防止错误?
提前感谢您的阅读。
【问题讨论】: