[英]SQLint showing a syntax error, yet batch file is run correctly?
我將Sublime Text與SublimeLinter-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:“(”)附近的語法錯誤。但是,作為批輸入,它似乎運行良好:
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文件。
我不認為字符串是INT的有效默認值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.