解决ERROR: No query specified的错误以及\G 和 \g 的区别

1. 复现错误


今天使用powershell连接数据库后,执行如下SQL语句:

mysql> select * from student where id =39 \G;

虽然成功查询除了数据,但报出如下错误的信息:

mysql> select * from student where id =39 \G;
*************************** 1. row ***************************
        id: 39
      name: 上官婉儿
        no: 2023112345
   address: 王者荣耀法师阵营
head_image: »?ÿ倨p賗謻p?几 T\灖 u5ë-;┾遙·ÿ ß槆Geo竳â/?PIen%葖î
娛遖>DYÎ>酄¾ 9?曝ã6ñª
 媾叿ÿ 桉u?     岜盾砚臊罬鱂暤暩"忇r亠胞稛鸑xP诒¶2墸惵vo]*q詛W煂^岙?胼³?_0捁钔搀?bT烰闕X趲梡鉑寄?矃o檣t"珪獨贇篕裴_¿2贌 K湘繇P杝O)






1 row in set (0.00 sec)

ERROR:
No query specified

No query specified

2. 分析错误


首先,我们需要了解\G的作用,可以通过\h命令来查询:

在这里插入图片描述

从图中的红框可知,\G表示Send command to mysql server, display result vertically.,即为如下功能:

  1. Send command to mysql server表示向mysql服务器发送一条命令,这个命令是结束的命令,等同于;

  2. display result vertically表示垂直展示SQL

\G既然表示结束SQL语句,那么:

select * from student where id =39 \G;

就相当于:

select * from student where id =39 ;;

  1. 第一个;的前面有一个查询,正常给出结果;

  2. 第二个;的前面什么都没有,Send command to mysql server后,会抛出一个ERROR提示:No query specified(没有指定查询)

当然,这种对我们日常操作没有太大影响,不用过分担心。

但是,对于严谨的程序工程师,遇到这样ERROR的错误提示信息,心里总是会感到有点慌。

3. 解决问题


既然\G;都代表一条SQL语句的结束,我们把;去掉即可,如下代码所示:

mysql> select * from student where id = 39 \G
*************************** 1. row ***************************
        id: 39
      name: 上官婉儿
        no: 2023112345
   address: 王者荣耀法师阵营
head_image: »?ÿ倨p賗謻p?几 T\灖 u5ë-;┾遙·ÿ ß槆Geo竳â/?PIen%葖î
娛遖>DYÎ>酄¾ 9?曝ã6ñª
 媾叿ÿ 桉u?     岜盾砚臊罬鱂暤暩"忇r亠胞稛鸑xP诒¶2墸惵vo]*q詛W煂^岙?胼³?_0捁钔搀?bT烰闕X趲梡鉑寄?矃o檣t"珪獨贇篕裴_¿2贌 K湘繇P杝O)






1 row in set (0.00 sec)

如此,便不再抛出异常了。

4. \G和\g的区别


有时,我们也会使用到\g,那么,它和\G有什么区别呢?

\g只表示Send command to mysql server,并没有垂直展示的意思。

当然,\g也等于;,即向MySQL服务发送结束语句的命令。

在这里插入图片描述

\G除了结束语句外,还有垂直展示的概念:


mysql> show create table student \G
*************************** 1. row ***************************
       Table: student
Create Table: CREATE TABLE `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `no` varchar(50) NOT NULL,
  `address` text,
  `head_image` blob,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

猜你喜欢

转载自blog.csdn.net/lvoelife/article/details/133816796