为什么sql有'near Something'作为错误消息?

问题描述 投票:0回答:3

有很多次,我在尝试调试一个查询时感到沮丧,该查询只是告诉我“在你的混乱附近有一个错误”。为什么它不能准确地告诉我错误?

示例:

您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,了解在第 12 行'systemquery1 as ( select data from (SELECT u.id as userid, ' at line 12

sql database mariadb rdbms
3个回答
2
投票

SQL 解析器——与许多语言的解析器一样——并不是那么聪明。他们知道语言是什么样的。然而,他们没有想象力。当事情不顺利时,他们只知道这是不对的。

人类语言一般不存在这个问题。它们内置了大量冗余,可以帮助说话者填补缺失的声音、缺失的单词、理解同音词和无法识别的语法。

一些较新的数据库引擎变得更加智能。例如,当我拼错某些内容时 BigQuery 会建议(总是正确的)变量名称,这仍然给我留下了深刻的印象。


2
投票

令人沮丧的语法错误消息的主要原因之一是 MySQL 和 MariaDB 解析器是使用 GNU Bison 解析器生成器创建的。由于该库的通用性质以及 SQL 解析器的实现方式,您会看到错误在哪里,但看不到预期的内容或正确的内容。

多个评论中提到的事实是,您可以将查询放入存储过程中,并且您将获得更好的错误消息。


0
投票
  1. 计算按年、按月的订单数量以及同比 (YoY) 百分比变化。将 YoY 值设置为不带小数的格式,并以 % 符号显示。 表:我想回答这些问题的订单
© www.soinside.com 2019 - 2024. All rights reserved.