首先,先谈一下关于数据库备份的问题吧。
我们进行数据库备份的命令:C:\Users\chenj>mysqldump -h localhost -p3306 -u root -p mydb2>d:/backup.sql ----点击回车后,正确输入密码即可备份成功
mysqldump是备份的命令
-h 是连接的主机
-p 端口号
-u 用户名
-p 密码
mydb2即是要备份的数据库,而 > 后面即是备份文件了
再说一下,从备份文件恢复数据库的命令:
前提:必须先创建数据库名
两种 方式:
方式一:(登录后使用)
mysql>user mydb4;
mysql>source d:/backup.sql;
方式二:(未登录时使用)
c:\Users\chenj\mysql -u root -p mydb4<d:/backup.sql ----点击回车后,正确输入密码即可恢复成功
由一个问题想到的:
今天在进行mysql数据库备份时,曾经在命令行窗口输入:mysql -u root -p mydbname<d:/backup.sql;
点击回车,原以为万事大吉,一切顺利,却没想到出现了如下图所示的神奇情况,
上图:
我仔细检查了一下,没有问题啊,这个库明明是我刚创建的,为啥计算机会不认识呢,为了确定我没有记错,我再次登录数据库进行确认,show databases ,然后一敲enter, 走你!
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mydb1 |
| mydb2 |
| mydb3 |
| mydb4 |
| mydb6 |
| mysql |
| performance_schema |
| test |
+--------------------+
9 rows in set (0.00 sec)
如果我的眼神儿没有问题的话,mydb4这个库明明是存在的,于是,我关闭命令行后重新打开,重新执行了恢复命令,很遗憾,依然报未知数据库异常,我苦思冥想,左敲右试,终于弹出了以下画面
执行成功了,我登录数据库确认,数据库确实是恢复成功了,可是为何刚开始时执行命令失败了呢?
细心的童鞋已经发现问题所在了,第一次输入恢复数据库命令时的命令后面习惯性的加上了一个分号,就是这个分号,导致了这个问题。同样的,还有备份时的命令:
元凶终于抓到了!
这也让我开始思考一个问题,当我们执行命令行的时候什么时候需要加分号,什么时候又不需要加分号呢?
根据我的经验而言,这个问题是这么看的,即在数据库登录前执行的命令,一般是不需要加分号结尾的,加上反而有问题,而登录之后,进入数据库的定义和操作层面,这时候的输入的sql命令最好是要加上分号,不然如果忘了输入分号按了回车,就会出现 -> ,当然,接着在出现->的后边输入分号,然后按回车依然会执行前面的sql。
如下图所示:
我们从此图可以看出,登录后输入use mydb4 命令时没有加分号,命令同样执行了,但是输入show tables命令时不加分号,命令即没有执行,底下再输入 “use mydb3;” (加分号)命令,命令也被执行了,
有此也可以看出,在登录后的操作中,需要执行的命令最好加上分号,一般不会报错。
当然,这只是我个人的经验之谈,如果有童鞋知道其背后的原理的话,也欢迎分享哈~