Подтвердить что ты не робот

Как включить модули Contrib в базе данных Heroku Postgres

Я пытаюсь использовать модули Contrib в новых общих базах данных Postgres 9 на Heroku. Более конкретно, модули pg_trgm и fuzzystrmatch. В документации говорится:

Кроме того, доступно множество бесплатных расширений, таких как fuzzystrmatch, pg_trgm и unaccent.

Я не могу найти какую-либо документацию о том, КАК реально включить эти модули в общую базу данных Heroku. См. Ответ ниже.

Примечание:

Я попытался добавить их, подключившись к базе данных с помощью

heroku pg:psql HEROKU_POSTGRESQL_BROWN

и работает

create extension pg_trgm
create extension fuzzystrmatch

но после попытки использовать его с помощью

SELECT levenshtein('tests', 'test');

он все еще сказал

ERROR:  function levenshtein(unknown, unknown) does not existLINE 1: SELECT levenshtein('tests', 'test');
               ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

Кто-нибудь знает, почему это происходит?

4b9b3361

Ответ 1

Найден ответ здесь при очистке. Не знаю, почему это не появилось ни в одном из моих поисков Google. Чтобы оставить вопрос здесь, если кто-то другой использует ту же формулировку для поиска этого.

Чтобы включить модули, вам необходимо добавить их к миграции следующим образом:

def up
  execute "create extension fuzzystrmatch"
  execute "create extension pg_trgm"
end

Ответ 2

В новых версиях Rails этого достаточно:

def change
  enable_extension "fuzzystrmatch"
  enable_extension "pg_trgm"
end

Если вам нужно написать методы up и down, соответствующий метод enable_extension будет disable_extension.