sqlint,批处理文件是否正确运行?

k2arahey  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(369)

我将sublime文本与subliveliter contrib sqlint插件一起使用,并遵循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>

知道是什么导致了这个“误报”语法错误吗?

ewm0tg9j

ewm0tg9j1#

您的问题看起来是由于底层linting工具没有使用正确的sql方言造成的,这使得它认为您使用的sql是无效的,即使(对于mysql)是有效的。
再深入一点看,sublivelister contrib sqlint包说它使用sqlint来执行linting,该存储库中的自述文件包括:
在这个阶段,sqlint根据ansi语法检查sql,并使用postgresql解析器来实现这一点。我们希望及时增加对非标准sql变体(例如mysql)的支持。欢迎捐款。
因此,目前该工具似乎无法处理使用非ansi/postgresql风格的sql的sql文件。

wgx48brx

wgx48brx2#

我不认为字符串是int的有效默认值。

相关问题