SQLint 显示语法错误,但批处理文件 运行 正确吗?
SQLint showing a syntax error, yet batch file is run correctly?
我将 Sublime Text 与 SublimeLinter-contrib-sqlint plugin and following the tutorial examples at 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 中,我看到一个语法错误:
如果我将鼠标悬停在它上面,它只会显示 "ERROR: Syntax error near "(""。但是,它似乎 运行 可以作为批输入:
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>
知道是什么导致了这个 'false positive' 语法错误吗?
我认为字符串不是 INT 的有效默认值。
您的问题看起来是由底层 linting 工具未使用 SQL 的正确方言引起的,这使得它认为您使用的 SQL 无效,即使(对于MySQL) 是。
看得更深一些,SublimeLinter-contrib-sqlint package says that it uses sqlint 执行 linting,该存储库中的自述文件包括:
At this stage, SQLint checks SQL against the ANSI syntax, and uses the PostgreSQL SQL parser to achieve this. In time, we hope to add support for non-standard SQL variants (e.g. MySQL). Contributions are welcome.
因此,目前该工具似乎无法检查使用 non-ANSI/PostgreSQL 风格 SQL.
的 SQL 文件
我将 Sublime Text 与 SublimeLinter-contrib-sqlint plugin and following the tutorial examples at 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 中,我看到一个语法错误:
如果我将鼠标悬停在它上面,它只会显示 "ERROR: Syntax error near "(""。但是,它似乎 运行 可以作为批输入:
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>
知道是什么导致了这个 'false positive' 语法错误吗?
我认为字符串不是 INT 的有效默认值。
您的问题看起来是由底层 linting 工具未使用 SQL 的正确方言引起的,这使得它认为您使用的 SQL 无效,即使(对于MySQL) 是。
看得更深一些,SublimeLinter-contrib-sqlint package says that it uses sqlint 执行 linting,该存储库中的自述文件包括:
At this stage, SQLint checks SQL against the ANSI syntax, and uses the PostgreSQL SQL parser to achieve this. In time, we hope to add support for non-standard SQL variants (e.g. MySQL). Contributions are welcome.
因此,目前该工具似乎无法检查使用 non-ANSI/PostgreSQL 风格 SQL.
的 SQL 文件