背景资料
在使用mysql进行备份/恢复时,我注意到已恢复的数据库缺少一堆表。
代码:
要创建转储文件,这是正在使用的命令:
mysqldump --databases widgetdb --master-data -u username -ptest --add-drop-database --extended-insert > /var/test/dump.db
然后我们尝试使用以下命令将数据库还原到其他服务器上:
mysql --user=username--password=test widgetdb < /var/test/dbdump.db
所以我检查了转储文件,并搜索了已恢复数据库中缺少的表。这就是代码的样子:
DROP TABLE IF EXISTS `widget1`;
/*!50001 DROP VIEW IF EXISTS `widget1`*/;
SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;
/*!50001 CREATE TABLE `widget1` (
`id` tinyint NOT NULL,
`name` tinyint NOT NULL,
`label` tinyint NOT NULL,
`objtype_id` tinyint NOT NULL,
`asset_no` tinyint NOT NULL,
`has_problems` tinyint NOT NULL,
`comment` tinyint NOT NULL
) ENGINE=MyISAM */;
SET character_set_client = @saved_cs_client;
我找到了以下帖子:MySQL dump file and commented out lines
这似乎表明注释掉的行仍将运行。在我的情况下,我正在运行高于50001的mysql版本5.5.35 ... 但是,当我恢复转储文件时,不会为我创建表。
我到目前为止所做的一切:
我尝试更改命令用来创建转储文件,以便我使用--opt选项尝试使用“默认值”。恢复的数据库仍然缺少表。