【发布时间】:2013-11-16 06:50:24
【问题描述】:
我不小心将 mysql 表中某个字段的所有记录替换为 NULL,并尝试恢复备份,以便在当前表和备份之间运行更新查询。我创建了一个名为 db_bckup 的新数据库,将其留空,然后尝试从命令行导入它:
mysql -u root -p db_bckup < mysqlbackupfile.sql
我认为这会将备份加载到我的空的 db_bckup 数据库中。令我惊讶的是,它覆盖了我的原始数据库,而不是加载到 db_bckup 中。在查看 sql 文件的内容时,我注意到内容包括以下行:
Host: localhost Database: db
-------------------------------------------
Server version 5.5.34-0ubuntu0.13.04.1
[SET a bunch of things]
Current Database: 'db'
CREATE DATABASE /*!32312 IF NOT EXISTS*/ 'db' /*!40100 DEFAULT CHARACTER SET latin1 */;
USE 'db';
[table specific stuff]
我怀疑 sql 文件中对“db”的引用覆盖了我的命令行导入代码。
我的问题是:是 sql 文件还是命令行导致了覆盖?如果 sql 文件是原因,是手动编辑备份文件以将 db 名称更改为 db_bckup 还是有更管理的方法将文件中的所有“db”引用更改为“db_bckup”?我有点担心弄乱备份文件,所以我想采取最好的方法,有更多经验的人会推荐。
【问题讨论】: