Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails试图根据请求连接到未配置的MySQL_Ruby On Rails_Ruby On Rails 3_Unicorn - Fatal编程技术网

Ruby on rails Rails试图根据请求连接到未配置的MySQL

Ruby on rails Rails试图根据请求连接到未配置的MySQL,ruby-on-rails,ruby-on-rails-3,unicorn,Ruby On Rails,Ruby On Rails 3,Unicorn,看到启动Unicorn服务器时出现奇怪的问题-bundle exec ruby Unicorn_rails.rb启动正常,但当我访问URL时,它显示: Mysql2::Error (Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)) 因此,unicorn似乎没有连接到在database.yml中配置的远程服务器(因为它正在尝试本地连接),尽管其他命令(例如,bundle ex

看到启动Unicorn服务器时出现奇怪的问题-
bundle exec ruby Unicorn_rails.rb启动正常,但当我访问URL时,它显示:

Mysql2::Error (Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2))
因此,unicorn似乎没有连接到在database.yml中配置的远程服务器(因为它正在尝试本地连接),尽管其他命令(例如,
bundle exec rails console
)工作正常。即使环境设置正确,它似乎也忽略了该设置。这是工作之前,但有东西打破了它

我将完整的堆栈跟踪放在这里:

database.yml:

staging:
  adapter: mysql2
  database: slide_staging
  host: 192.168.1.255
  port: 3306
  pool: 5
  username: deploy
  password: <%= ENV['DB_PASS'] || "notconfiguredyet" %>
  timeout: 5000
  reconnect: true
staging:
适配器:mysql2
数据库:幻灯片放映
主机:192.168.1.255
港口:3306
游泳池:5
用户名:部署
密码:
超时:5000
重新连接:正确

它可能链接到unicorn配置

特别是如果你预装了应用程序。 里面有这些线吗

before_fork do |server, worker|
  # the following is highly recomended for Rails + "preload_app true"
  # as there's no need for the master process to hold a connection
  defined?(ActiveRecord::Base) and
    ActiveRecord::Base.connection.disconnect!

end

after_fork do |server, worker|
  # the following is *required* for Rails + "preload_app true",
  defined?(ActiveRecord::Base) and
    ActiveRecord::Base.establish_connection
end

我终于解决了这个问题。原来Rails环境被覆盖了,因为我引入了一个包含bug的配置代码段,使用了
Rails.env='test'
而不是
Rails.env=='test'
。我发现我的开发模式是在
测试环境下运行的,尽管
ENV['RAILS_ENV']
被正确设置为
开发

出于兴趣,你是否在config/database.yml
套接字中设置了以下行:/tmp/mysql.sock
?@David否,数据库是远程的,所以我认为不需要任何套接字。您可以粘贴
数据库.yml
文件的内容吗?启动unicorn的正确方法是
bundle exec unicorn rails
在使用中当您使用-E标志强制环境时会发生什么<代码>bundle exec unicorn\u rails-E'staging'