Ошибка с оператором LIKE в PostgreSQL (Spring, Hibernate)
Я использую Spring и PostgreSQL в своем проекте. В dev стенде postgresql 15 версии, в prod 11.
При переносе в prod возникает ошибка при выполнении следующего запроса:
Page<Etd> findByProjectNameContains(String projectName, Pageable pageable);
Сообщение ошибки выглядит так:
Caused by: org.postgresql.util.PSQLException: Unterminated string literal started at position 1 139 in SQL
select ...
from etd_requests e1_0
where e1_0.project_name like ? escape '\'
order by e1_0.id offset ? rows fetch first ? rows only.
Expected char
Я попробовал вручную выполнить запрос в dev и prod БД, в результате ошибка выходит только во втором случае
В чем может быть проблема?
Update
В postgresql.conf поменял standard_conforming_string = off
на standard_conforming_string = on
, после этого запрос выполняется без ошибок.
Спасибо пользователю Мелкий
Ответы (1 шт):
Автор решения: Мелкий
→ Ссылка
В базах сконфигурирован разный standard_conforming_strings
.
melkij@melkij:~$ psql -c 'set standard_conforming_strings to on' -c "select 'foo' like '%123%' escape '\'"
SET
?column?
----------
f
(1 строка)
melkij@melkij:~$ psql -c 'set standard_conforming_strings to off' -c "select 'foo' like '%123%' escape '\'"
SET
WARNING: nonstandard use of \' in a string literal
LINE 1: select 'foo' like '%123%' escape '\'
^
HINT: Use '' to write quotes in strings, or use the escape string syntax (E'...').
ERROR: unterminated quoted string at or near "'\'"
LINE 1: select 'foo' like '%123%' escape '\'