Что это значит

PostgreSQL не смог разобрать текст запроса. Слово после at or near и номер символа (at character 57) указывают место, где разбор сломался. Сама ошибка обычно чуть раньше.

Типичные причины:

  • строка в двойных кавычках: в PostgreSQL "text" это имя столбца, строковые значения пишутся в одинарных;
  • зарезервированное слово в качестве имени без кавычек (user, order, group);
  • синтаксис другой СУБД: TOP 10 из MS SQL, квадратные скобки в именах;
  • шаблон запроса, в который не подставился параметр: в тексте остался $1, {0} или пустое место.

Как проверить

  1. Найти в журнале PostgreSQL строку STATEMENT: рядом с ошибкой: там полный текст запроса.
  2. Отсчитать позицию из at character N и посмотреть, что стоит перед ней.

Что сделать

  1. Исправить текст запроса: кавычки, имена, синтаксис.
  2. Если запрос собирает программа, найти место, где не подставился параметр, и перейти на параметризованные запросы вместо склейки строк.