SQLint показывает синтаксическую ошибку, но пакетный файл работает правильно? - PullRequest
0 голосов
/ 12 октября 2018

Я использую 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);

В Sublime Text с включенным линтером я вижу синтаксическую ошибку:

enter image description here

Если навести на него курсор, он просто говорит «ОШИБКА: синтаксическая ошибкарядом с "(" ". Однако, похоже, что он работает нормально, как пакетный ввод:

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> 

Есть идеи, что может вызвать эту синтаксическую ошибку" ложное срабатывание "?

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Ваша проблема выглядит так, как будто она вызвана тем, что базовый инструмент linting не использует правильный диалект SQL, что заставляет его думать, что используемый вами SQL-код недействителен, хотя (для MySQL) это так.

Глядя немного глубже, пакет SublimeLinter-contrib-sqlint говорит, что для выполнения линтинга используется sqlint , а README в этом репозитории включает в себя:

На этом этапе SQLint проверяет SQL на соответствие синтаксису ANSI и использует для этого синтаксический анализатор PostgreSQL SQL.Со временем мы надеемся добавить поддержку нестандартных вариантов SQL (например, MySQL).Вклад приветствуется.

Таким образом, на данный момент кажется, что инструмент не способен связывать файлы SQL, использующие SQL без ANSI / PostgreSQL.

0 голосов
/ 12 октября 2018

Я не верю, что строка является допустимым значением по умолчанию для INT.

...