62 votes

la configuration de la base de données ne spécifie pas d'adaptateur

Je reçois cette erreur lorsque j'essaie de me connecter à une base de données mysql. Le problème est que l'application fonctionne pendant des semaines, puis je reçois ce message au hasard. Lorsque je reçois ce message d'erreur, l'application n'est pas en mesure de se reconnecter à la base de données tant que je ne la redémarre pas.

J'utilise un fichier de configuration pour me connecter à la base de données, et l'adaptateur est spécifié ... la configuration de la base de données n'est pas générée au moment de l'exécution.

Avez-vous une idée de ce qui se passe?

68voto

Fumisky Wells Points 616

Quand j'ai essayé d'exécuter un script en ligne de commande (disons 'mon_script' ici), la même erreur s'est produite. Les raisons étaient:

  1. Il n'y a qu'un environnement de production là-bas.
  2. J'ai manqué de définir RAILS_ENV pour la ligne de commande.

Donc, voici la solution dans mon cas:

$ RAILS_ENV = production mon_script

35voto

djacobs7 Points 3131

Je viens d'avoir ce problème, et il a été causé par une faute de frappe dans mon configration.yml.

J'avais à l'origine ceci:

 production:
  adapter:mysql
 

Quand je voulais avoir ceci:

 production:
  adapter: mysql
 

Ce petit espace entre adapter: et mysql fait la différence.

12voto

Benjamin Oakes Points 3715

Une autre cause possible:

Dans Les Rails 3.2.x, establish_connection a un argument par défaut définie à partir de l'environnement:

De connection_specification.rb:

def self.establish_connection(spec = ENV["DATABASE_URL"])
  resolver = ConnectionSpecification::Resolver.new spec, configurations
  spec = resolver.spec

La façon dont ConnectionSpecification::Resolver travaux dépend ENV['DATABASE_URL'] donner un nil si pas défini. (Normalement, il serait quelque chose comme 'postgres://...').

Donc, si vous arrive d'avoir un problème de configuration DATABASE_URL tels que ENV['DATABASE_URL'] == '', qui vous donnera database configuration does not specify adapter.

7voto

andrew Points 101

J'ai eu cette erreur quand j'ai commencé par erreur le serveur de rails avec

sudo rails s -e "Production" -p 80

et j'aurais dû commencer rails avec

sudo rails s -e "production" -p 80

4voto

Jarrett Points 2487

J'ai trouvé une autre chose qui peut provoquer ce problème: "le mélange dans un" autre YAML nœud à l'aide de & et *.

J'ai été à l'origine de faire quelque chose comme ce qui suit afin de faciliter local, par-développer, Git-ignoré des fichiers de configuration:

http://blog.lathi.net/articles/2006/03/02/config-database-yml-goodness-for-teams

Mais, après un peu de débogage, je suis venu pour savoir que establish_connection a été pour quelque raison d'être appelé avec seulement le mélange de paires clé-valeur et pas la principale. I. e. adapter, host, et database n'ont pas été transmis. Je n'ai aucune idée de pourquoi, et cette habitude de travailler pour moi.

De toute façon, au lieu de mélanger dans un autre YAML nœud, je vais maintenant mettre l'ensemble de l' development et test hachages dans les locaux de fichier de config, et establish_connection est de nouveau appelée correctement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X