在练习mysql过程中,由于要删除表,所以提前对表做了一个备份,但是在还原的时候却总是提示如下错误:ERROR 1046 (3D000) at line 22: No database selected

备份命令如下


[root@DB ~]# mysqldump  -uroot -p123456 addam test >/home/addam_test_bak.sql

检查/home下是否有备份


[root@DB ~]# ll /home
-rw-r--r--  1 root      root      2132 Sep 11 23:54 addam_test_bak.sql

查看备份内容,内容已经存在。

开始试验,使用drop删除掉addam库中的test表,删除没问题。为了以后的试验,我现在想要将test恢复,就开始报错

[root@DB ~]# mysql -uroot -p123456 </home/addam_test_bak.sql
ERROR 1046 (3D000) at line 22: No database selected

仔细的检查了一下备份文件的22行,发现在22行是DROP TABLE IF EXISTS `test`;当然会找不到了,因为我的test表示创建在addam的库中的,解决办法就是在它前面加入一条use addam;


21 USE addam;
22 DROP TABLE IF EXISTS `test`;

然后保存退出!再次执行恢复命令,问题得以解决!

那么有人说,删除这一行可以不可以呢?经过试验测试,是不可以滴,呵呵~

20 --
21 /*!40101 SET @saved_cs_client     = @@character_set_client */;
22 /*!40101 SET character_set_client = utf8 */;
23 CREATE TABLE `test` (

删除这一行之后,还是会报同样的错误,因为这个第23行它还是不知道在哪个库里去创建,所以还是直接加一条use addam;比较好。

具体有没有其他办法我还不清楚,因为网上的有些问题跟我的不一样,我也是第一次碰见这种问题,不知道就是解决方法是对是错,只是暂时解决问题。如果哪位大牛有其他的办法,请帮忙指点一下,谢谢!