2012-07-21 83 views
1

我試圖讓CakePHP的crontab工作(現在在我的共享Dreamhost服務器上運行)。Cakephp Shell無法連接到mysql

我有一個外殼設置爲每book,它通過任一個cron運行或手動執行(都是通過殼文件工作正常,例如:

cron.sh 
######### 
cd /pathToApp/app/Console 
/usr/local/bin/php cake.php updater list_reports 

其中更新是我的殼和list_reports一個。方法及其

,當我嘗試訪問該數據庫在外殼(「在你的程序中使用的模型」,相同的鏈接)出現該問題

錯誤消息:

Error: Database connection "SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)" is missing, or could not be created.

我的數據庫設置(網站正常工作http,我需要添加unix_socket什麼?

array(
     'datasource' => 'Database/Mysql', 
     'persistent' => false, 
     'host' => 'mysql.mydomain.net', 
     'port' => '3306', 
     'login' => '*******', 
     'password' => '*******', 
     'database' => '*******', 
     'prefix' => '', 
    ); 

件事我已經試過:

  • 創建符號鏈接/var/run/mysqld/mysqld.sock - 權限被拒絕
  • 我甚至可以這樣做與共享主機?
  • 嘗試上面的數據庫設置的各種更改,沒有運氣。
  • 我注意到人們用127.0.0.1替換localhost解決了類似的問題,但我使用共享主機,而不是本地。
+1

從錯誤消息,它聽起來像它試圖連接到本地mysql數據庫,而不是您的遠程數據庫。 – ifunk 2012-07-21 12:28:56

+0

好點,我一直專注於錯誤味精的插座位,沒有注意到「本地」這個詞的含義。它是共享主機,mysql.mydomain.net是通過Dreamhost面板設置的主機名 - 是否與此相關? – 2012-07-21 12:36:31

+0

我不熟悉Dreamhost,但你可以嘗試執行你的腳本: cd/pathToApp/app 控制檯/蛋糕更新程序list_reports – ifunk 2012-07-21 12:56:01

回答

2

這是官方!我是一個分貝!

我可以確認這個問題不是由任何CakePHP的或MySQL造成的,而是東西我做我自己,忘記了....

我在database.php中一個小開關自動檢測無論我是在dev,test,staging環境等等。我的默認設置爲local,並且由於bash腳本沒有選擇我正在用於交換機的$ _SERVER ['SERVER_NAME'],它默認爲我的本地數據庫。

感謝ifunk發現了讓我解開這條線索並回到正軌的線索!

:)

+1

這就是爲什麼我追加應用程序的路徑 - 所以交換機也工作適用於所有環境的CLI - 請參閱http://www.dereuromark.de/2012/02/25/dynamic-database-switching/ – mark 2012-07-22 02:32:22

+0

良好的信息標記 - 從未在文檔中看到環境或路徑密鑰..它們是否唯一使用你的安裝插件? – 2012-07-23 14:15:40

+0

我發明了它們:)所以它們對我的插件/安裝類是獨一無二的 – mark 2012-07-23 15:11:41