簡體   English   中英

SQLint顯示語法錯誤,但批處理文件已正確運行?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM