我的OS X开发笔记本电脑上的一切正常。
将应用程序部署到生产环境,然后运行并按预期显示数据。
但是,当我尝试在生产服务器上运行Rails 控制台时,出现错误...
$ rails console -e production
/opt/deployed_rails_apps/con_app_rails_3/shared/bundle/ruby/1.9.1/gems/mysql2-0.3.11/lib/mysql2/client.rb:44:
in `connect': Can't connect to local MySQL server through socket
'/tmp/mysql.sock' (2) (Mysql2::Error)
from /opt/deployed_rails_apps/con_app_rails_3/shared/bundle/ruby/1.9.1/gems/mysql2-0.3.11/lib/mysql2/client.rb:44:in `initialize'
from /opt/deployed_rails_apps/con_app_rails_3/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.2/lib/active_record/connection_adapters/mysql2_adapter.rb:16:in `new'
我尝试从database.yml中删除socket: /tmp/mysql.sock
- 结果相同。
虽然应用程序运行,但我确实需要能够在生产中访问控制台以执行某些任务。
我可以使用MySQL命令行客户端连接到MySQL服务器。
ruby 1.9.3p125
Rails 3.2.2
mysql2 gem 0.3.11
MySQL服务器:5.1.61
生产主机:Linux 2.6.32-220.4.2.el6.x86_64
的database.yml
development:
adapter: mysql2
encoding: utf8
reconnect: false
database: con_app_rails_3_development
pool: 5
username: root
password:
socket: /tmp/mysql.sock
test:
adapter: mysql2
encoding: utf8
reconnect: false
database: con_app_rails_3_test
pool: 5
username: root
password:
socket: /tmp/mysql.sock
production:
adapter: mysql2
encoding: utf8
reconnect: false
host: dbhost
database: con_app_rails_3_production
pool: 5
username: xxxx
password: xxxx
socket: /tmp/mysql.sock
答案 0 :(得分:36)
解决了它。
我需要做的只是......
$ RAILS_ENV=production bundle exec rails console
答案 1 :(得分:8)
另一种方法:
./script/rails console production
答案 2 :(得分:1)
答案 3 :(得分:0)
您还可以通过将--environment=production
参数附加到rails c
或rails console
命令中来解决此问题
rails c --environment=production
仅此而已。
我希望这会有所帮助