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

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

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

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

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

(Кроме того, я использую придумывание, если это имеет значение)

Когда я запускаю 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 отношение ERROR 'users' не существует

database.yml:

development:
  adapter: sqlite3
  encoding: unicode
  database: chore_app_development
  pool: 5

test:
  adapter: sqlite3
  encoding: unicode
  database: chore_app_test
  pool: 5

production:
  adapter: postgresql
  database: chore_app_production
  pool: 5
  timeout: 5000

Gemfile:

source 'https://rubygems.org'
ruby '2.0.0'

gem 'rails', '4.0.1'

# Database
group :production do
  gem 'pg'
end

group :development, :test do
  gem 'sqlite3'
end

# Assets
gem 'sass-rails', '~> 4.0.0'
gem 'uglifier', '>= 1.3.0'
gem 'turbolinks'
gem 'haml-rails'
gem 'jquery-rails'

# Heroku
gem 'rails_12factor', group: :production

# Application
gem 'devise'
gem 'formtastic'

# Testing
gem 'factory_girl_rails'
4b9b3361

Ответ 1

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

FactoryGirl закручивает rake db: процесс переноса

Ответ 2

Сначала я попробую

heroku restart

heroku rake db:migrate

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

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

heroku rake db:migrate

Ответ 3

Run

heroku pg:reset DATABASE_URL

и все готово.

Ответ 4

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

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

  • в вашей базе данных .yml, вы должны прочитать URL-адрес базы данных из переменной среды, например: Производство:

    url: <% = ENV [ "DATABASE_URL" ]% >

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

rake db:migrate VERSION=0

Ответ 5

Отбросить и воссоздать базу данных

  • Вход в героиню в терминале
  • cd в ваше приложение
  • Run

heroku pg: reset БАЗЫ ДАННЫХ