#postgresql #elixir #phoenix-framework #ecto
#postgresql #elixir #phoenix-framework #ecto
Вопрос:
У меня есть эта функция поиска в моем контроллере:
def search(query, search_term) do
(from u in query,
where: fragment("(to_tsvector('portuguese', unaccent(?)) @@ plainto_tsquery(?))", u.name, ^search_term),
order_by: fragment("ts_rank((to_tsvector('portuguese', unaccent(?)), plainto_tsquery(?))) DESC", u.name, ^search_term))
end
Я получаю эту ошибку:
ERROR (undefined_function): function unaccent(character varying) does not exist
Я также добавил unaccented
расширение в PostgreSQL с:
CREATE EXTENSION unaccent;
Как заставить это работать?
Комментарии:
1. Похоже, вам не хватает закрытия
)
во 2-мfragment
, возможно, раньшеDESC
.2. Если это исправит проблему, пожалуйста, примите решение о закрытии голосования «простая опечатка».
3. Вы правы, но это не было моей главной проблемой (это была ошибка при копировании кода сюда). Я собираюсь отредактировать свою ошибку. В любом случае, я думаю, что получил подсказку для другого шага после прочтения еще нескольких материалов — мне нужно установить расширение PostgreSQL.
4. Вероятно, вы ищете
create extension unaccent
новую ошибку при миграции.5. Ахах. Я только что отредактировал свой вопрос. Но я добавил его прямо в свой терминал psql. Нужно ли мне делать это внутри миграции? Как?