使用命令行进行mysql数据库备份与恢复,以及命令执行错误时想到的关于命令结尾加分号的问题

首先,先谈一下关于数据库备份的问题吧。

我们进行数据库备份的命令: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

 

由一个问题想到的:

 

今天在进行mysql数据库备份时,曾经在命令行窗口输入:mysql -u root -p mydbname

点击回车,原以为万事大吉,一切顺利,却没想到出现了如下图所示的神奇情况,

上图:

使用命令行进行mysql数据库备份与恢复,以及命令执行错误时想到的关于命令结尾加分号的问题_第1张图片

我仔细检查了一下,没有问题啊,这个库明明是我刚创建的,为啥计算机会不认识呢,为了确定我没有记错,我再次登录数据库进行确认,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这个库明明是存在的,于是,我关闭命令行后重新打开,重新执行了恢复命令,很遗憾,依然报未知数据库异常,我苦思冥想,左敲右试,终于弹出了以下画面

使用命令行进行mysql数据库备份与恢复,以及命令执行错误时想到的关于命令结尾加分号的问题_第2张图片

执行成功了,我登录数据库确认,数据库确实是恢复成功了,可是为何刚开始时执行命令失败了呢?

细心的童鞋已经发现问题所在了,第一次输入恢复数据库命令时的命令后面习惯性的加上了一个分号,就是这个分号,导致了这个问题。同样的,还有备份时的命令:

使用命令行进行mysql数据库备份与恢复,以及命令执行错误时想到的关于命令结尾加分号的问题_第3张图片

元凶终于抓到了!

这也让我开始思考一个问题,当我们执行命令行的时候什么时候需要加分号,什么时候又不需要加分号呢?

根据我的经验而言,这个问题是这么看的,即在数据库登录前执行的命令,一般是不需要加分号结尾的,加上反而有问题,而登录之后,进入数据库的定义和操作层面,这时候的输入的sql命令最好是要加上分号,不然如果忘了输入分号按了回车,就会出现  -> ,当然,接着在出现->的后边输入分号,然后按回车依然会执行前面的sql。

如下图所示:

使用命令行进行mysql数据库备份与恢复,以及命令执行错误时想到的关于命令结尾加分号的问题_第4张图片

我们从此图可以看出,登录后输入use mydb4 命令时没有加分号,命令同样执行了,但是输入show tables命令时不加分号,命令即没有执行,底下再输入 “use mydb3;” (加分号)命令,命令也被执行了,

有此也可以看出,在登录后的操作中,需要执行的命令最好加上分号,一般不会报错。

当然,这只是我个人的经验之谈,如果有童鞋知道其背后的原理的话,也欢迎分享哈~

你可能感兴趣的:(技术分享,MySQL,数据库)