2017-05-14 4 views
3

지난 2 일간 appengine에서 cloudsql에 연결하려고 시도했지만 IP를 통해 Linux 웹 서버에서 연결할 수 있지만 같은 엔진에서 연결할 수는 없습니다. 설정. 다음과 같이응용 프로그램 엔진에서 Google Cloudql에 연결할 수 없습니다.

내 연결 문자열은 다음과 같습니다 실제 APPID을 유의하시기 바랍니다 phpfile이라고에서 애플리케이션 제목

env_variables: 
    MYSQL_DSN: mysql:unix_socket=/cloudsql/appid:us-central1:sql-instance-1;dbname=dbname 
    MYSQL_USER: root 
    MYSQL_PASSWORD: '' 

DBNAME을뿐만 아니라 대체

$dsn = getenv('MYSQL_DSN'); 
$user = getenv('MYSQL_USER'); 
$password = getenv('MYSQL_PASSWORD'); 
if (!isset($dsn, $user) || false === $password) { 
    throw new Exception('Set MYSQL_DSN, MYSQL_USER, and MYSQL_PASSWORD environment variables'); 
} 
$conn = new PDO($dsn, $user, $password); 

위의 주소는 https://cloud.google.com/appengine/docs/standard/php/cloud-sql/ 에서 얻은 것입니다. 암호를 사용하지 않고 암호를 사용하지 않으려 고 시도했습니다. 암호없이 사용자 이름과 암호없이 사용자 이름으로 사용자 이름 루트를 시도했습니다.

간단한 에러

SQLSTATE[HY000] [2002] No such file or directory 

Fatal error: Uncaught PDOException: SQLSTATE[HY000] [2002] No such file or directory in /app/dbconn.php:12 Stack trace: #0 /app/dbconn.php(12): PDO->__construct('mysql:unix_sock...', 'root', '') #1 /app/api.user.php(2): include_once('/app/dbconn.php') #2 {main} thrown in /app/dbconn.php on line 12 

내가 진정 오전 전체 오류 : 나는 2 세대 설정 및 플렉스 PHP 환경을 사용하고

, 내가 받고 계속 오류는 다음과 아이디어가 없어졌습니다. SQL과 app는 모두 같은 프로젝트에 있습니다.

+0

문제를 해결할 수 있으십니까? 나는 같은 것을 얻고있다. –

+0

@IlkerBaltaci 솔루션을 찾지 못했고 VM/Compute 엔진을 대신 사용했습니다. – Shaun

답변

3

인스턴스를 SSH로 실행하면 (디버그 모드로 바뀜) 소켓 파일의 존재 여부를 확인할 수 있습니다. 클라우드 콘솔에서 연결을 열 수 있습니다. 이 디렉토리가 MYSQL_DSN 환경 변수에 따라 항목 명명 된 <project-id>:<region>:<instance-name>을 포함해야

ls /cloudsql 

그런

.

거기에 없으면 에서 관련 API 인을 사용 설정했는지 확인하십시오. 문서 페이지 Using Cloud SQL에서 "시작하기 전에"- 특히 "API 사용"아래에있는 지침을 따르십시오. "Access Not Configured. Cloud SQL Administration API는 프로젝트에서 사용되지 않았거나 사용 중지되었습니다."을 다시 배포하기 전에 API를 사용하도록 설정 한 후 잠시 기다리십시오.

당신은 이미이 작업을 수행했을 수도 있지만 제 경험상 간과하기 쉬운 단계입니다. 또한

, 당신의 애플리케이션 제목 파일이 다음이 포함되어 있는지 확인하십시오

beta_settings: 
    cloud_sql_instances: "<project-id>:<region>:<instance-name>" 

마지막으로, 따옴표에서 애플리케이션 제목을 파일에 MYSQL_DSN의 값을 넣어보십시오.

+0

답변 해 주셔서 감사합니다. ls/cloudsql에 다음과 같은 결과를 보았습니다. ls :/cloudsql에 액세스 할 수 없습니다. 해당 파일이나 디렉토리가 없으며, API가 활성화되었는지도 확인했습니다. 결국 솔루션을 찾을 수 없기 때문에 계산 엔진을 사용했습니다. – Shaun

+2

또 다른 가능성을 포함하도록 답변을 업데이트했습니다. 'beta_settings' 값을 올바르게 설정했는지 확인하십시오. – nicoqh

+0

이것도 작동하지 않습니다 – Subash