Ошибки синтаксиса MySQL часто довольно расплывчаты, только указывая строку, в которой происходит ошибка. Написание парсера, который дает точное и полезное сообщение об ошибке, не является полностью тривиальным, но это не проблема открытого исследования: большинство компиляторов для языков программирования общего назначения создают сообщения об ошибках, которые намного полезнее.
Так почему же анализатор MySQL не создает более качественные сообщения об ошибках? Это как-то связано с MySQL, или грамматика SQL, как правило, делает это чрезвычайно трудным?
Вот пример:
SELECT * FROM foo
WHERE bar > 0
AND baz NOT NULL
ORDER BY qux ASC
MySQL генерирует следующее сообщение об ошибке: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL ORDER BY qux ASC'
Фактически, NOT NULL должен быть IS NOT NULL. Итак, почему MySQL не генерирует ошибку, например Unexpected token NOT at line 3 column 8?