На heroku, rake db: migrate завершается с ошибкой "в конфигурации базы данных не указан адаптер" - PullRequest
3 голосов
/ 12 марта 2012

Я следовал Rails Tutorial вплоть до связанной точки.

Вот вывод оболочки:

jrhorn424 at hook in ~/Learning/rails/rails-tutorial/demo_app on master
$ heroku run rake db:migrate          
Running rake db:migrate attached to terminal... up, run.2

### Snip ###

Migrating to CreateUsers (20120310145100)
Migrating to CreateMicroposts (20120311052021)
rake aborted!
database configuration does not specify adapter

Tasks: TOP => db:schema:dump
(See full trace by running task with --trace)

Я проконсультировался по быстрому запуску Heroku и немного погуглил.Я подозревал, что проблема была с config/database.yml, поскольку в моей среде разработки полно ссылок на sqlite3.Однако на сервере этот же файл включает в себя следующие строки:

adapter = uri.scheme
adapter = "postgresql" if adapter == "postgres"

Добавление данных через развернутое приложение завершается успешно, но выполнение heroku run rake db:migrate все еще не удается.

Вот мой Gemfile:

source 'https://rubygems.org'

gem 'rails', '3.2.2'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

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

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '3.2.4'
  gem 'coffee-rails', '3.2.2'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer'

  gem 'uglifier', '1.2.3'
end

gem 'jquery-rails', '2.0.0'

group :production do
    gem 'pg', '0.12.2'
end

Ответы [ 6 ]

3 голосов
/ 03 декабря 2013

Для меня я столкнулся с этой ошибкой, когда пытался открыть консоль rails в производстве,

Когда я дал,

bundle exec rails c RAILS_ENV=production

выдает ошибку

 `resolve_hash_connection': database configuration does not specify adapter (ActiveRecord::AdapterNotSpecified)

но это работает, когда я дал,

RAILS_ENV=production bundle exec rails c
2 голосов
/ 12 марта 2012

Я бы порекомендовал сбросить ваши базы данных с:

bundle exec rake db:drop:all

Если вы планируете хостинг на heroku, продолжайте и используйте postgres для всех ваших сред.Удалите драгоценный камень sqlite и просто включите

gem 'pg'

в верхней части вашего Gemfile.

Выполните:

bundle
bundle exec rake db:create
bundle exec rake db:migrate

Попытайтесь зафиксировать и нажать еще раз (вы знаете,как это сделать уже).

Дайте мне знать, если это не сработает.

PS, вот как выглядит мой файл database.yml:

# PostgreSQL v0.8.x
#   gem install pg
 development:
  adapter: postgresql
  encoding: unicode
  host: localhost
  database: health_development
  pool: 5
  username: volpine
  password: password

  # Warning: The database defined as "test" will be erased and
  # re-generated from your development database when you run         "rake".
  # Do not set this db to the same as development or production.
 test:
  adapter: postgresql
  encoding: unicode
  host: localhost
  database: health_test
  pool: 5
  username: volpine
  password: password

production:
  adapter: postgresql
  encoding: unicode
  host: localhost
  database: health_production
  pool: 5
  username: volpine
  password: password
1 голос
/ 03 июня 2012

Я столкнулся с этим и обнаружил, что ручная установка RAILS_ENV добилась цели для меня:

heroku run RAILS_ENV=production rake db:migrate
0 голосов
/ 09 мая 2013

Heroku не смотрит на ваш файл database.yml, он смотрит на DATABASE_URL - если он не установлен или в нем есть опечатка, вы получите эту ошибку.

0 голосов
/ 19 октября 2012

У меня была такая же проблема. Это произошло потому, что я удалил переменную среды RAILS_ENV из своего приложения heroku и оставил только RACK_ENV.

Добавление RAILS_ENV = production исправило проблему:

heroku config:add RAILS_ENV=production --app XXXX-production
0 голосов
/ 12 марта 2012

Когда я запустил heroku db:push, у меня появилась ошибка taps , из-за которой я переключился на использование ruby ​​1.9.2.После переключения версий и запуска нового приложения я больше не получаю сообщение об ошибке от heroku run rake db:migrate, и все работает как ожидалось.

Обновление: Мне только что сообщили, что несовпадение версий не должноне имеет значения для db:migrate.Это определенно имело значение для db:push, поэтому я не уверен, что было не так.В любом случае, когда я инициализирую новое приложение с тем же Gemfile и 1.9.2, оно работает.

...