MySQL语句末尾的\g是什么意思?如何修复未运行的查询?
我有一个自动生成的SQL脚本要在5.6.17-157.2上运行 它在5.5.33-1.17.1运行良好 每个SQL语句的末尾都显示MySQL语句末尾的\g是什么意思?如何修复未运行的查询?,mysql,Mysql,我有一个自动生成的SQL脚本要在5.6.17-157.2上运行 它在5.5.33-1.17.1运行良好 每个SQL语句的末尾都显示\g。比如说 CREATE TABLE articoli ( ID INT, titolo LONGTEXT, sottoti
\g
。比如说
CREATE TABLE articoli
(
ID INT,
titolo LONGTEXT,
sottotitolo LONGTEXT,
descrizione LONGTEXT,
note LONGTEXT,
nomeopzione1 LONGTEXT,
nomeopzione2 LONGTEXT,
nomeopzione3 LONGTEXT,
pagina CHAR(100),
sottopagina SMALLINT,
plain_titolo CHAR(200),
plain_sottotitolo CHAR(200),
nomeopzione4 LONGTEXT,
KEY (ID),
KEY (pagina),
KEY (sottopagina)
);\g
两个版本之间发生了什么变化以中断查询执行?我如何告诉5.6接受\g而不在乎
我不能仅仅改变SQL。它是自动生成的代码,必须作为讨厌的可怕软件“每日更新”(daily update)的最后一步运行
[更新]最好改变这个问题:仅仅知道那是什么还不够。我需要运行查询。
go-(\g)-向mysql服务器发送命令
(\g)->开始
向mysql服务器发送命令。mysql已经接受
\g
,但它必须遵循SQL语句
\g
与基本相同代码>也就是说,它是语句的终止符,这意味着将其发送到服务器进行解析和执行
您的示例显示了以分号和\g
结尾的create table语句。这将导致CREATETABLE语句运行,因为它有一个分号。但随后它尝试在没有语句的情况下运行另一个语句终止符
试试这个:
mysql> ;
ERROR:
No query specified
当然没有指定任何查询,这只是显示一个没有查询的分号
这与除了\g
之外什么都没有的行是一样的:
mysql> \g
ERROR:
No query specified
$ cat > bad.sql
select 123; \g
$ sed -e 's/\\g//g' bad.sql
select 123;
如果您运行一个真正的查询,然后运行任意一种类型的冗余终止符,您会得到类似的结果。它运行第一个查询,然后空查询失败:
mysql> select 123; ;
+-----+
| 123 |
+-----+
| 123 |
+-----+
ERROR:
No query specified
mysql> select 123; \g
+-----+
| 123 |
+-----+
| 123 |
+-----+
ERROR:
No query specified
我不知道你是什么意思,这个代码是生成的,你不能更改它。你必须这么做,因为你所拥有的不会起作用
我建议您在尝试运行之前,先从文件中删除\g
。下面是一个文件示例,其中包含错误的空查询模式,并使用sed删除冗余的\g
:
mysql> \g
ERROR:
No query specified
$ cat > bad.sql
select 123; \g
$ sed -e 's/\\g//g' bad.sql
select 123;
两人都投了赞成票。我笨得连问题都说错了。