Rails de configuration de base de données ne permet pas de spécifier l'adaptateur. Que dois-je faire?
Voici le message d'erreur:
/Users/davidzabner/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_specification.rb:47:in `resolve_hash_connection'
/Users/davidzabner/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_specification.rb:41:in `resolve_string_connection'
...
/Users/davidzabner/.rvm/gems/ruby-1.9.3-p448/gems/railties-3.2.13/lib/rails/application.rb:103:in `require_environment!'
/Users/davidzabner/.rvm/gems/ruby-1.9.3-p448/gems/railties-3.2.13/lib/rails/application.rb:297:in `block (2 levels) in initialize_tasks'
/Users/davidzabner/.rvm/gems/ruby-1.9.3-p448/bin/ruby_noexec_wrapper:14:in `eval'
/Users/davidzabner/.rvm/gems/ruby-1.9.3-p448/bin/ruby_noexec_wrapper:14:in `<main>'
Ma base de données.fichier yml:
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000
production:
adapter: sqlite3
database: db/production.sqlite3
pool: 5
timeout: 5000
Mon Gemfile:
source 'https://rubygems.org'
gem "therubyracer"
gem "less-rails" #Sprockets (what Rails 3.1 uses for its asset pipeline) supports LESS
gem "twitter-bootstrap-rails"
gem 'jquery-rails'
gem 'devise'
gem 'rails', '3.2.13'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
group :development, :test do
gem 'sqlite3'
end
group :production do
gem 'pg'
end
gem 'mini_magick'
gem "rmagick"
gem "carrierwave"
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'
# To use Jbuilder templates for JSON
# gem 'jbuilder'
# Use unicorn as the app server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'capistrano'
# To use debugger
# gem 'debugger'
Il semble que vous n'avez pas copié dans tous les message d'erreur?
Nous montrer la
Est que la façon dont votre base de données de configuration est, sans retours à la ligne? Que serait certainement votre problème si elle est.
c'était juste un formatage, j'ai édité.
Pouvez-vous évaluer le
Nous montrer la
gem
fichier, s'il vous plaît.Est que la façon dont votre base de données de configuration est, sans retours à la ligne? Que serait certainement votre problème si elle est.
c'était juste un formatage, j'ai édité.
Pouvez-vous évaluer le
Rails.env
et le rapport que les revenir ici? par exemple, le lieu d'une "throw Rails.env
dans environment.rb
? Le plus souvent, ces erreurs se produisent lorsque vous exécutez des Rails, dans un (personnalisé) environnement qui n'est pas défini dans la base de données.yml.OriginalL'auteur NW0428 | 2013-07-10
Vous devez vous connecter pour publier un commentaire.
J'ai résolu un problème similaire dans un certain projet complexe. Pas sûr que c'est directement lié, mais je vais poster ce que le mode de débogage, le problème peut être utile.
Dans mon cas, j'ai eu le scénario suivant:
RAILS_ENV=production
. Quand j'ai faitRAILS_ENV=development
il a travaillé. Bizarrement assez, quand j'ai changé leproduction
entrée dansdatabase.yml
àproduction2
et l'exécution de la commande avecRAILS_ENV=production2
, il a travaillé.Voici ce que j'ai fait pour détecter la question:
vim /Users/davidzabner/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_specification.rb
(ou partout où la trace est vous dire que le problème est).
Ensuite, j'ai trouvé l'endroit dans le code qui contient ces lignes:
Et cela a changé la suivante:
Puis j'ai rediffusé la commande, dans mon cas
bundle exec rails c production
.En faisant cela, j'ai réalisé que les Rails n'était pas à la recherche de la
production
entrée que je pensais qu'il était. Il était à la recherche pour une entrée différente appeléabc_production
, qui a été nécessaire à mon projet en raison des multiples connexions de base de données j'ai fait référence plus tôt. Sur ce serveur en particulier quelqu'un a oublié d'ajouter queabc_production
entrée àdatabase.yml
. L'ajout de l'entrée a résolu le problème.Je crois que c'est arrivé seulement quand
RAILS_ENV=production
parce que dansenvironments/production.rb
j'aiconfig.eager_load = true
, ce qui signifie que les Rails hâte-charger l'application et les classes de la mémoire, et sans doute tenter d'établir toutes les connexions de base de données défini dans ces classes (l'un d'eux étantabc_production
).Espère que cela aide quelqu'un dans une situation similaire... Si vous ne l'utilisez pas les connexions multiples, d'essayer de déboguer le problème en changeant
connection_specification.rb
et voir si elle vous donne tout au plomb.Merci, qui finalement m'a aidé à trouver le problème!!!!!!!!
OriginalL'auteur AmitA
je n'ai pas maintenant exactement ce que vous avez essayé de le faire mais.
actuellement j'ai eu la même erreur que j'ai essayé d'exécuter < rails c -e de production > avec ruby-2.10.
comme je le run < rails c production > tout fonctionne.
peut-être que cela aide quelqu'un
OriginalL'auteur stephanfriedrich
J'ai eu un problème similaire avec mise en scène de l'environnement et j'ai fait:
Il a bien fonctionné moi il y a après.
OriginalL'auteur raghu
J'ai emballé une gist avec un échantillon de la base de données de configuration, assurez-vous d'utiliser.
L'essentiel est situé à: https://gist.github.com/fidalgo/5970617
Aussi assurez-vous d'exécuter râteau
db:setup
pour l'installation de votre base de données.Parce que dans votre environnement que vous utilisez Sqlite pour la production et le test de trop, dans votre Gemfile modifier cette ligne:
à
il ne devrait pas faire de différence significative, sauf que vous utilisez un autre environnement de développement.
OriginalL'auteur Paulo Fidalgo
J'ai rencontré ce problème aussi. J'ai essayé toutes les questions que je peux trouver, mais aucun n'a résolu mon problème, alors j'ai essayé d'imprimer les configurations de système de lecture à partir de la base de données.yml dans
activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_specification.rb
La sortie est
Donc, mon problème est qu'il ya quelque chose de mal dans la base de données.yml causes YAML erreur d'analyse. Toutefois, je n'ai pas trouver quelque chose de mal par mes yeux nus alors j'ai copié un fichier à partir d'un autre serveur puis le problème résolu.
Espère que cela peut aider quelqu'un :p
OriginalL'auteur raven
Sais que c'est un peu vieux, mais venez de rencontrer tandis que la recherche d'une réponse à un problème similaire. Je voulais simplement faire remarquer que vous avez encore sqlite3 que votre adaptateur dans votre .yml. Comme vous l'avez probablement constaté, depuis, Heroku ne permet pas sqlite3 comme une base de données de production. SQLite sur Heroku
OriginalL'auteur Simon Cooper