2012-07-21 2 views
1

Cakephp (현재 공유 된 Dreamhost 서버에서 실행 중)에서 crontab을 사용하려고합니다. 업데이트 프로그램이Cakephp 쉘이 mysql에 연결할 수 없습니다.

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

내 쉘이고를 list_reports :

나는 수동으로 크론 실행 또는 둘 모두 쉘 파일을 통해 (실행 중 하나를 통해 작품을 잘 book에 따라 설정 쉘, 예를 . 내가 (같은 링크를 "쉘에서 모델을 사용") 쉘에서 데이터베이스에 액세스하려고 할 때 방법은 그

문제가 발생

오류 메시지 :.

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.

내 DB 설정 (사이트가 http에 잘 작동합니다. unix_socket 또는 그 이상을 추가해야합니까?

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

것 나는 시도했다 :

  • /var/run/mysqld/mysqld.sock에 심볼릭 링크 만들기 - 권한 심지어 공유 호스팅이 작업을 수행 할 수
  • 를 거부?
  • 위의 db 설정에 다양한 변경을 시도했지만 행운은 없습니다.
  • 비슷한 문제가 localhost를 127.0.0.1로 대체하는 사람들에 의해 해결되었지만 로컬이 아닌 공유 호스트를 사용하고 있습니다.
+1

오류 메시지에서 원격 데이터베이스 대신 로컬 mysql 데이터베이스에 연결하려는 것 같습니다. – ifunk

+0

좋은 점은, 오류 메시지의 소켓 비트에 집중하고 있었고, "지역"이라는 단어의 의미를 알지 못했습니다. 공유 호스팅입니다. Dreamhost 패널을 통해 설정된 호스트 이름 인 mysql.mydomain.net이 관련성이 있습니까? –

+0

저는 Dreamhost에 익숙하지 않지만 다음과 같이 스크립트를 실행 해보십시오 : cd/pathToApp/app 콘솔/케이크 업데이터 list_reports – ifunk

답변

2

공식적입니다. 나는 DB 다! 내가 자동으로 감지하는 database.php에 약간의 스위치를했다

나는이 문제를 확인할 수 있습니다

CakePHP를 또는 MySQL의 중 하나에 의해 발생되지 않고, 뭔가 나 자신을 수행했던 및 잊어 .... 내가 dev에 있는지, 테스트 환경에 있는지 등등. 나는 로컬에 기본 설정을 했었고, bash 스크립트가 스위치를 위해 사용하고있는 $ _SERVER [ 'SERVER_NAME']을 선택하지 않았기 때문에, 로컬 db.

실마리를 찾아 주셔서 감사합니다.이를 통해 나를 풀고 다시 궤도에 올라 설 수있었습니다!

:

+1

그것이 내가 앱의 경로를 추가하는 이유입니다. - 스위치도 작동합니다. 모든 환경의 CLI - http://www.dereuromark.de/2012/02/25/dynamic-database-switching/ – mark

+0

을 참조하십시오. 좋은 정보 마크 - 문서의 환경 또는 경로 키를 본 적이 없습니다. 설치 플러그인? –

+0

나는 그것을 발명했다. :) 그래서 그들은 내 플러그인/setupclass에 고유하다. – mark

관련 문제