2009-04-16 2 views
2

In meiner Anwendung habe ich ein Runner-Skript, das nach Zeitplan ausgeführt wird (crontab), das eine Verbindung zur Datenbank herstellen und Informationen abrufen muss. Ich erhalte die folgende Fehlermeldung, wenn ich versuche, eine Abfrage (mit Model.find (...)) zu laufen:Ruby on Rails kann keine Verbindung zur Datenbank vom Runner-Skript herstellen

.../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) 

Antwort

0

Im Allgemeinen wird diese Art der Sache, weil entweder Weg geschieht (so werden Sie nicht das Recht zu sehen database.yml oder etwas) oder Berechtigungen (Sie tun es nicht als der richtige Benutzer).

Ein Muster, das für mich funktioniert im Allgemeinen ist ein crontab Eintrag wie folgt zu setzen:

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

in der crontab des (pseudo) -user, dass die App wie läuft.

+0

Es stellte sich heraus, dass meine Runner-Skripts standardmäßig nicht in der Produktionsumgebung ausgeführt wurden. Wenn sie gezwungen werden, die Produktionsdatenbank zu verwenden, wird das Problem behoben. – Goro

Verwandte Themen