Rails 4.0.1 на Heroku, не удается создать базу данных

Я не могу получить rake db: migrate для запуска на моем rails 4.0.1 app на Heroku.

Я предполагаю, что у меня нет postgres настроен должным образом... но чтение документов на heroku не очень помогло, и я не уверен, что делать. Я не слишком много знаю о хероку и Постгресе.

любая помощь или ресурсы были бы весьма признательны. Дайте мне знать, если есть что-нибудь еще, что я могу отправить.

(кроме того, я использую devise, если это имеет значение)

когда я запускаю heroku run rake db:migrate Я понимаю:

Running `rake db:migrate` attached to terminal... up, run.5077
PG::UndefinedTable: ERROR:  relation "users" does not exist
LINE 5:                WHERE a.attrelid = '"users"'::regclass
                                      ^
:               SELECT a.attname, format_type(a.atttypid, a.atttypmod),
                 pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
            FROM pg_attribute a LEFT JOIN pg_attrdef d
              ON a.attrelid = d.adrelid AND a.attnum = d.adnum
           WHERE a.attrelid = '"users"'::regclass
             AND a.attnum > 0 AND NOT a.attisdropped
           ORDER BY a.attnum

rake aborted!
PG::UndefinedTable: ERROR:  relation "users" does not exist
LINE 5:                WHERE a.attrelid = '"users"'::regclass
                                      ^
:               SELECT a.attname, format_type(a.atttypid, a.atttypmod),
                 pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
            FROM pg_attribute a LEFT JOIN pg_attrdef d
              ON a.attrelid = d.adrelid AND a.attnum = d.adnum
           WHERE a.attrelid = '"users"'::regclass
             AND a.attnum > 0 AND NOT a.attisdropped
           ORDER BY a.attnum

когда я запускаю heroku run rake db:setup Я понимаю:

FATAL:  permission denied for database "postgres"
DETAIL:  User does not have CONNECT privilege.

... stack trace ...

Couldn't create database for {"adapter"=>"postgresql", "username"=>"aqofwrwjifcqkx", "password"=>"7yqDAx1L_4HFhw7WV3PH7ZrKyM", "port"=>5432, "database"=>"d5dvi0pjk7dgr7", "host"=>"ec2-23-21-94-137.compute-1.amazonaws.com"}

затем следует тот же PG::UndefinedTable отношение ошибки "пользователи" не существует

5 ответов


Я бы сначала попробовать

heroku restart

heroku rake db:migrate

Если это не сработает, попробуйте.

heroku pg:reset DATABASE_URL   #Literally type in heroku pg:reset DATABASE_URL

heroku rake db:migrate

Я должен был прочитать трассировку стека более внимательно. Моя фабрика.rb создавал пользовательские объекты в качестве атрибутов для других фабрик. Обернув их в блок, зафиксировал его:

FactoryGirl завинчивает грабли db:процесс миграции


Run

heroku pg:reset DATABASE_URL

и вы сделали.


ответ Джейсона может решить вашу проблему, но я хотел бы подробнее рассказать, почему вы получили ошибку и как ее исправить.

  1. вы не можете запустить "rake db: setup" на Heroku, потому что он попытается создать базу данных, а ваша база данных уже существует на Heroku

  2. в вашей базе данных.yml, вы должны прочитать url базы данных из переменной среды, например: производство: url: <%= ENV["DATABASE_URL"] %>

  3. Я думаю, что вы получаете 2-ю ошибку, потому что у вас есть некоторая ошибка версии в ваших миграциях, запуск их с самого начала должен исправить это : rake db:migrate VERSION=0


чтобы удалить и повторно создать базу данных

  1. войдите в heroku в терминале
  2. cd в ваше приложение
  3. выполнить

heroku pg: сброс базы данных