我使用带有SublimeLinter-contrib-sqlint插件的Sublime Text,并遵循https://dev.mysql.com/doc/refman/8.0/en/examples.html上的教程示例,其中一个示例包含以下内容:

CREATE TABLE shop (
    article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,
    dealer  CHAR(20)                 DEFAULT ''     NOT NULL,
    price   DOUBLE(16,2)             DEFAULT '0.00' NOT NULL,
    PRIMARY KEY(article, dealer));
INSERT INTO shop VALUES
    (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),
    (3,'C',1.69),(3,'D',1.25),(4,'D',19.95);


在启用了linter的Sublime Text中,我看到语法错误:

mysql - SQLint显示语法错误,但批处理文件已正确运行?-LMLPHP

如果将鼠标悬停在它上面,它只会显示“ ERROR:“(”)附近的语法错误。但是,作为批输入,它似乎运行良好:

mysql> source shop.sql
Query OK, 0 rows affected (0.07 sec)

Query OK, 7 rows affected (0.00 sec)
Records: 7  Duplicates: 0  Warnings: 0

mysql>


任何想法可能导致此“假阳性”语法错误吗?

最佳答案

您的问题似乎是由基本的整理工具未使用正确的SQL方言引起的,这使您认为您正在使用的SQL无效(即使对于MySQL)也无效。

再深入一点,SublimeLinter-contrib-sqlint软件包表示它使用sqlint进行插入,并且该存储库中的README包括以下内容:


  在此阶段,SQLint对照ANSI语法检查SQL,并使用PostgreSQL SQL解析器来实现这一点。我们希望及时增加对非标准SQL变体(例如MySQL)的支持。欢迎捐款。


因此,目前看来该工具无法整理使用非ANSI / PostgreSQL风格的SQL的SQL文件。

关于mysql - SQLint显示语法错误,但批处理文件已正确运行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52784179/

10-10 08:52