в конфигурации базы данных не указан адаптер - PullRequest
61 голосов
/ 05 января 2009

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

Я использую файл конфигурации для подключения к базе данных, и указан адаптер ... конфигурация базы данных не создается во время выполнения.

Есть ли у вас какие-либо идеи о том, что происходит?

Ответы [ 23 ]

1 голос
/ 31 августа 2012

В Интернете есть множество плохих учебников, которые показывают файлы yaml, например:

development:
encoding: utf
database: dbname
...etc

Файлы YAML чувствительны к регистру и требуют ДВУХ ПРОСТРАНСТВ для внутреннего содержимого каждого данного атрибута типа db. Вот так:

development:
  encoding: utf
  database: dbname
  ...etc

ОБНОВЛЕНИЕ: я получил эту ошибку снова сегодня. На моем VPS-сервере был установлен Rails 3.2.8, когда мое приложение работало с Rails 3.2.6.

Обязательно проверьте ваш Gemfile и файл database.yml (конечно). Проблема здесь четко сформулирована --- Rails не связывается с вашей базой данных, в частности, из-за адаптера (он же gem)

1 голос
/ 10 августа 2012

У меня была эта ошибка с другой проблемой; Я дважды указал «развитие», а «тест» - совсем нет.

1 голос
/ 03 июня 2015

У вас может быть ошибка вроде:

RAILS_ENV= test

Пробел после знака равенства не допускается, замените его на:

RAILS_ENV=test
1 голос
/ 05 января 2009

Не забудьте использовать C-Based ruby ​​gem для mysql. На основе рубина нестабильно для производства.

Попробуйте установить гем

gem install mysql

Не забудьте скопировать libmySQL.dll в каталог ruby ​​bin.

1 голос
/ 03 августа 2014

Я столкнулся с этой проблемой из-за проблемы с поддержкой нескольких баз данных. В моей папке app/model есть файл с избыточным подключением к базе данных:

class CacheCleanerActiveRecord < ActiveRecord::Base
  establish_connection "cache_cleaner_#{Rails.env}"
  self.abstract_class = true
end

но эта база данных не найдена в моем database.yml (потому что она вообще не используется).

так что решение достаточно простое: удалите этот файл, и все в порядке!

1 голос
/ 14 марта 2014

У нас была эта проблема с одним из наших старых приложений. Кто-то создал бутик с именем environment, и даже если RAIL_ENV был настроен на работу, он искал конфигурацию базы данных с именем legacy_<RAIL_ENV>, поэтому мне пришлось создать среду базы данных с именем legacy_production, чтобы это приложение работало.

Если вы поддерживаете чужое приложение, я бы искал копию database.yml этого приложения, которое работает, возможно, оно имеет какую-то странно названную конфигурацию. Вы можете найти в вашей кодовой базе establish_connection, чтобы определить, не определяет ли он какой-то странный вариант.

0 голосов
/ 17 октября 2013

звонок rake assets:precompile:all

0 голосов
/ 07 мая 2014

Вам необходимо указать среду при запуске сервера или команды, так как ваш файл database.yml может иметь только рабочий адаптер, в то время как простой запуск rake db: migrate, например, примет переменную среды как разработку.

0 голосов
/ 22 сентября 2013

rails -e "production" все в порядке

только rails -e production возвращает ошибку

database configuration does not specify adapter (ActiveRecord::AdapterNotSpecified)
0 голосов
/ 20 июля 2016

Это происходит со мной, в конце концов я обнаружил, что RAILS_ENV чувствителен к регистру, в моей среде я установил RAILS_ENV=DEVELOPMENT, что неверно, значение RAILS_ENV должно быть строчными .

$ RAILS_ENV=DEVELOPMENT rails server webrick
=> Booting WEBrick
=> Rails 4.2.5 application starting in DEVELOPMENT on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
config.eager_load is set to nil. Please update your config/environments/*.rb files accordingly:

  * development - set it to false
  * test - set it to false (unless you use a tool that preloads your test environment)
  * production - set it to true

Exiting
/home/fangxing/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.5/lib/active_record/connection_adapters/connection_specification.rb:248:in `resolve_symbol_c
onnection': 'DEVELOPMENT' database is not configured. Available: ["default", "development", "test", "production"] (ActiveRecord::AdapterNotSpecified)
        from /home/fangxing/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.5/lib/active_record/connection_adapters/connection_specification.rb:211:in `res
olve_connection'



$ RAILS_ENV=development rails server webrick
RubyDep: WARNING: Your Ruby is outdated/buggy. (To disable warnings, set RUBY_DEP_GEM_SILENCE_WARNINGS=1)
RubyDep: WARNING: Your Ruby is: 2.3.0 (buggy). Recommendation: install 2.3.1.
=> Booting WEBrick
=> Rails 4.2.5 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2016-07-20 16:41:09] INFO  WEBrick 1.3.1
[2016-07-20 16:41:09] INFO  ruby 2.3.0 (2015-12-25) [x86_64-linux]
[2016-07-20 16:41:09] INFO  WEBrick::HTTPServer#start: pid=19881 port=3000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...