2009-04-16 47 views
2

在我的应用程序中,我有一个按计划运行的runner脚本(crontab),它需要连接到数据库并获取一些信息。我收到以下错误,当我尝试运行一个查询(使用Model.find(...)):Ruby on Rails无法通过运行脚本连接到数据库

.../vendor/rails/railties/lib/commands/runner.rb:45: .../vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb:471:in `real_connect': Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) (Mysql::Error) 

回答

0

一般这样的事情发生,因为无论路径(这样你就不会看到正确的database.yml或其他)或权限(你没有把它作为正确的用户)。

通常为我工作模式是把一个crontab条目是这样的:

cd path/to/rails/app-root; script/runner MyController.thing_to_do 

在(伪)用户的应用程序运行作为crontab中。

+0

原来,我的跑步者脚本默认情况下并未运行生产环境。强制他们使用生产数据库来处理这个问题。 – Goro 2009-04-17 17:28:41

相关问题