Heroku + Apartment PG::Error: ОШИБКА: функция pg_stat_statements_reset() не существует

Я использую драгоценный камень Apartment в Rails 4 для поддержки мультиарендности в Postgres 9.3.3 на Heroku.

Произошла ошибка, когда драгоценный камень квартиры создает нового арендатора.

Глубокое исследование показало, что схема создана, но таблиц внутри нет.

Журналы Heroku показали ошибку:

PG::Error: ERROR:  function pg_stat_statements_reset() does not exist

person Serge Seletskyy    schedule 11.02.2015    source источник


Ответы (1)


При создании новой схемы Postgres пытается сбросить статистику, выполнив функцию pg_stat_statements_reset().

По умолчанию эту функцию могут выполнять только суперпользователи (из оригинального документа).

Heroku не дает вам привилегий суперпользователя. Поэтому вам нужно отключить расширение pg_stat_statements.

Решение 1. Быстрое оперативное исправление непосредственно в БД

  1. Получите доступ к консоли Rails для вашего приложения Heroku:

    рельсы бега героку c

  2. Выполните оператор SQL в схеме public:

    ActiveRecord::Base.connection.execute(DROP EXTENSION pg_stat_statements;)

Решение 2 — с помощью миграции

  1. Проверьте файл db/schema.rb. Скорее всего там есть строчка

    enable_extension pg_stat_statements

  2. Создайте файл миграции

    Rails g миграция DropExtensionPgStatStatements

  3. определить метод self.up

    def self.up disable_extension pg_stat_statements конец

  4. применить миграцию

    грабли базы данных: миграция

  5. Теперь файл db/schema.rb не должен содержать эту строку

  6. Зафиксируйте изменения (файлы схемы и миграции) и разверните их в Heroku.

    грабли развернуть:производство:миграции

О задаче rake см. deploy.rake.

person Serge Seletskyy    schedule 11.02.2015
comment
Боже, ты спас мою задницу! СПАСИБО! - person typeoneerror; 13.08.2016