gpt4 book ai didi

mysql - 如何检查 .sql 文件中的 SQL 语法?

转载 作者:IT老高 更新时间:2023-10-28 23:47:54 26 4
gpt4 key购买 nike

如何检查 .sql 文件中的 SQL 语法?

最佳答案

MySQL 8.0 中的

SELECT STATEMENT_DIGEST_TEXT 可用于 MySQL 查询语法验证。

8.0.4>SELECT STATEMENT_DIGEST_TEXT('FLUSH TABLES')\G
STATEMENT_DIGEST_TEXT('FLUSH TABLES'): FLUSH TABLES

8.0.4>SELECT STATEMENT_DIGEST_TEXT("SET GLOBAL second_cache.key_buffer_size=128*1024;")\G
STATEMENT_DIGEST_TEXT("SET GLOBAL second_cache.key_buffer_size=128*1024;"): SET GLOBAL `second_cache` . `key_buffer_size` = ? * ? ;

8.0.4>SELECT STATEMENT_DIGEST_TEXT("create TABLE t1 ( a2 int unsigned not null, b2 int unsigned not null, c2 int unsigned not null, primary key (a2), index b2x (b2), index c2x (c2) ) ENGINE=MEMORY;")\G
STATEMENT_DIGEST_TEXT("create TABLE t1 ( a2 int unsigned not null, b2 int unsigned not null, c2 int unsigned not null, primary key (a2), index b2x (b2), index c2x (c2) ) ENGINE=MEMORY;"): CREATE TABLE `t1` ( `a2` INTEGER UNSIGNED NOT NULL , `b2` INTEGER UNSIGNED NOT NULL , `c2` INTEGER UNSIGNED NOT NULL , PRIMARY KEY ( `a2` ) , INDEX `b2x` ( `b2` ) , INDEX `c2x` ( `c2` ) ) ENGINE = MEMORY ;

如果 SQL 不受支持,您将收到错误消息。与下一个一样,但此响应有一些特别之处;

8.0.4>SELECT STATEMENT_DIGEST_TEXT('HELP SELECT')\G
ERROR 3676 (HY000): Could not parse argument to digest function: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT' at line 1".

你看到有什么特别之处了吗?事实上,“帮助”是一个有效的但仅限客户端的关键字,而不是服务器关键字。不管怎样,一条无效的SQL语句都会产生类似的情况;一个错误。

因此,您可以根据 ERROR 与 NO ERROR 检查以了解传递的 SQL 语法是否有效(不包括非常有限的仅客户端命令集,但大多数人不会感兴趣) .

总结; SELECT STATEMENT_DIGEST_TEXT 是一个全面的 SQL 解析器(虽然这可能不是它的直接/预期功能),可在所有情况下用于快速检查语句的有效性,而无需实际执行它们。就 SQL 有效性验证而言,这是一个巨大的进步。

请注意,您需要为此启动并运行 MySQL 服务器。您可以使用 mysql -e 客户端或管道传递查询到 mysql 等。

关于mysql - 如何检查 .sql 文件中的 SQL 语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/956507/

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