数据库配置未指定适配器

Rob*_*rto 60 ruby ruby-on-rails

当我尝试连接到mysql数据库时,我收到此错误.问题是该应用程序可以运行数周,然后我会随机收到此消息.当我收到此错误消息时,应用程序无法重新连接到数据库,直到我重新启动它.

我正在使用配置文件连接到数据库,并指定了适配器......数据库配置不会在运行时生成.

你对发生了什么有什么想法吗?

小智 68

当我试图运行命令行脚本(让我们在这里说'my_script')时,发生了同样的错误.原因是:

  1. 那里只有生产环境.
  2. 我错过了为命令行设置RAILS_ENV.

所以,以下是我案例中的解决方案:

$ RAILS_ENV =生产my_script

  • 当我运行`RAILS_ENV =生产轨道c`时为我工作,但是当我运行`rails c RAILS_ENV = production`时没有工作.首先设置env就是诀窍. (3认同)
  • $ export RAILS_ENV =生产应该更好. (2认同)

dja*_*bs7 35

我刚遇到这个问题,这是由我的configration.yml中的拼写引起的.

我原来有这个:

production:
  adapter:mysql
Run Code Online (Sandbox Code Playgroud)

当我打算这样做时:

production:
  adapter: mysql
Run Code Online (Sandbox Code Playgroud)

适配器之间的一个小空间:和mysql有所不同.


Ben*_*kes 11

另一个可能原因:

在Rails 3.2.x中,establish_connection从环境中设置了一个默认参数:

来自connection_specification.rb:

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

ConnectionSpecification::Resolver工作方式取决于ENV['DATABASE_URL']给出一个nilif not set.(通常,它会是这样的'postgres://...').

So, if you happen to have misconfigured DATABASE_URL such that ENV['DATABASE_URL'] == '', that will give you database configuration does not specify adapter.


and*_*rew 7

当我错误地启动rails服务器时,我遇到了这个错误

sudo rails s -e"Production"-p 80

我应该开始使用rails

sudo rails s -e"production"-p 80


Ric*_*ras 1

请记住对 mysql 使用 C-Based ruby​​ gem。基于 ruby​​ 的生产不稳定。

尝试安装 gem

gem install mysql
Run Code Online (Sandbox Code Playgroud)

请记住将libmySQL.dll复制到 ruby​​ bin 目录中。