gpt4 book ai didi

mysql - MySQL语句末尾的\g是什么意思?以及如何修复未运行的查询?

转载 作者:行者123 更新时间:2023-11-29 04:20:15 25 4
gpt4 key购买 nike

我有一个自动生成的 SQL 脚本可以在 5.6.17-157.2 上运行。

它在 5.5.33-1.17.1 上运行良好。

每个 SQL 语句都在末尾显示 \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。它是自动生成的代码,必须作为可怕的软件可憎“每日更新”的最后一步运行(https://serverfault.com/questions/458340/euro-character-messed-up-during-ftp-transfer)

[更新] 最好换个问题:知道那是什么还不够。我需要运行查询。

最佳答案

MySQL 已经接受 \g,但它必须跟在 SQL 语句之后。

\g;基本相同,都是语句的结束符,表示将语句发送到服务器解析执行。

您的示例显示了一个以分号和\g 结尾的创建表语句。这导致创建表语句运行,因为它有一个分号。但随后它会尝试运行另一个没有语句的语句终止符。

试试这个:

mysql> ;
ERROR:
No query specified

当然没有指定查询,这只是显示一个没有查询的分号。

这与只有 \g 的行相同:

mysql> \g
ERROR:
No query specified

如果您运行一个真正的查询,然后使用任一类型的冗余终止符,您会得到类似的结果。它运行第一个查询,然后在空查询上失败:

mysql> select 123; ;
+-----+
| 123 |
+-----+
| 123 |
+-----+

ERROR:
No query specified

mysql> select 123; \g
+-----+
| 123 |
+-----+
| 123 |
+-----+

ERROR:
No query specified

我不知道你的意思是这个代码是生成的,你不能改变它。您将不得不这样做,因为您所拥有的将不起作用。

我建议您在尝试运行文件之前从文件中删除 \g。下面是一个包含错误的空查询模式并使用 sed 删除冗余 \g 的文件示例:

$ cat > bad.sql
select 123; \g

$ sed -e 's/\\g//g' bad.sql
select 123;

关于mysql - MySQL语句末尾的\g是什么意思?以及如何修复未运行的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26496223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com