2009-04-16 13 views
2

私のアプリケーションでは、データベースに接続して情報を取得する必要があるランナースクリプト(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など)または権限(適切なユーザーとして実行していない)アプリとして実行されることを(擬似)-userのcrontabファイルに

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

:一般的に私の作品

パターンは、このようなcrontabエントリを置くことです。

+0

私のランナースクリプトは、実稼働環境をデフォルトで実行していなかったことが判明しました。本番データベースを使用するように強制すると、問題が解決されます。 – Goro