Главная / Справочник ошибок / PostgreSQL
Ошибка в тексте SQL-запроса
ERROR: syntax error at or near
«ERROR: syntax error at or near "..." at character N» (SQLSTATE 42601) в PostgreSQL: запрос не разобран. Позиция в тексте показывает место. Частые причины: кавычки, зарезервированные слова, синтаксис другой СУБД, неподставленный параметр.
Что это значит
PostgreSQL не смог разобрать текст запроса. Слово после at or near и номер символа (at character 57) указывают место, где разбор сломался. Сама ошибка обычно чуть раньше.
Типичные причины:
- строка в двойных кавычках: в PostgreSQL
"text"это имя столбца, строковые значения пишутся в одинарных; - зарезервированное слово в качестве имени без кавычек (
user,order,group); - синтаксис другой СУБД:
TOP 10из MS SQL, квадратные скобки в именах; - шаблон запроса, в который не подставился параметр: в тексте остался
$1,{0}или пустое место.
Как проверить
- Найти в журнале PostgreSQL строку
STATEMENT:рядом с ошибкой: там полный текст запроса. - Отсчитать позицию из
at character Nи посмотреть, что стоит перед ней.
Что сделать
- Исправить текст запроса: кавычки, имена, синтаксис.
- Если запрос собирает программа, найти место, где не подставился параметр, и перейти на параметризованные запросы вместо склейки строк.
Ошибка повторяется?
Запустите Диагностика: за полминуты он покажет состояние базы, брокера, поиска и сервера. С отчётом разберём причину за 30 минут бесплатного созвона.
Написать