2017-04-14 5 views
0

pdo 데이터 연결을 만들고 있습니다. 연결은 localhost에서 잘 작동합니다. 그러나 원격 데이터베이스에 연결하고 전에 사용한 것과 동일한 자격 증명을 사용하면 빈 페이지, 오류 메시지, 빈 페이지 만 표시됩니다.SQLSTATE [HY000] [2002] 작업 시간이 초과되었습니다

이전 프로젝트에서 작동하는 것과 동일한 자격 증명이 mysqli에서 수행되었습니다.이 작업은 pdo로 수행됩니다.

두 가지 유형의 pdo 연결 코드를 시도했지만 그 중 아무 것도 작동하지 않습니다.

먼저 하나

$databaseHost = 'x.xxx.xxx.xx'; 
$databaseName = 'xxxxxxxxx'; 
$databaseUsername = 'xxxxxxx'; 
$databasePassword = 'xxxxxx'; 
$charset = 'utf8'; 

try { 

    $dsn = "mysql:host=$databaseHost;dbname=$databaseName;charset=$charset"; 


} catch(PDOException $e) { 
    echo 'Connection failed: ' . $e->getMessage(); 
} 

$opt = [ 
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 
    PDO::ATTR_EMULATE_PREPARES => false, 
     ]; 

$pdo = new PDO($dsn, $databaseUsername, $databasePassword, $opt); 

두 번째 :

localhost를 모두 연결 작업, 난 그냥 브라우저에서 로컬로이 연결 페이지를로드하려고해도
$databaseHost = 'x.xxx.xxx.xx'; 
$databaseName = 'xxxxxxxxx'; 
$databaseUsername = 'xxxxxxx'; 
$databasePassword = 'xxxxxx'; 

$opt = [ 
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 
    PDO::ATTR_EMULATE_PREPARES => false, 
     ]; 

try { 

    $pdo = new PDO("mysql:host={$databaseHost};dbname={$databaseName}", $databaseUsername, $databasePassword, $opt); 

    } catch(PDOException $e) { 
    echo 'Connection failed: ' . $e->getMessage(); 
    } 

, 주먹 옵션을 준 이 오류 :

Fatal error: Uncaught PDOException: SQLSTATE[HY000] [2002] Operation timed out in /Applications/MAMP/htdocs/ijdb_pdo/config.php:24 Stack trace: #0 /Applications/MAMP/htdocs/ijdb_pdo/config.php(24): PDO->__construct('mysql:host=83.1...', 'u1164707_sohail', 'sohail123', Array) #1 {main} thrown in /Applications/MAMP/htdocs/ijdb_pdo/config.php on line 24

두 번째 옵션에서 다음과 같은 오류가 발생했습니다.

againtestConnection failed: SQLSTATE[HY000] [2002] Operation timed out

내 코드가 어수선합니까?

내가 가진 단자를 통해 연결 한 후 시도 :

MacBook-Pro-3:/ sohail$ /Applications/MAMP/Library/bin/mysql -h "xx.xxx.xxx.xx" -u "xxxxxx" "-pxxxxxxx" "xxxxxxx"; 

다음과 같은 오류 있어요 :

Warning: Using a password on the command line interface can be insecure. ERROR 2003 (HY000): Can't connect to MySQL server on 'xx.xxx.xxx.xx' (60) MacBook-Pro-3:/ sohail$

나는 내 원격 컴퓨터에 터미널 접속이 생각하지 않습니다를, 그래서 'PORT'와 같이 SHOW GLOBAL 변수를 사용할 수 없습니다. cmd -thanks

+0

MySQL이 서버에서 다른 포트 번호를 사용하고있을 가능성이 있습니까? – Difster

+0

포트 번호가 존재하는지 어떻게 알 수 있습니까? 나는 서버에서 phpMyAdmin을 실행하고있다. mysqlWorkbench에서 로컬로 작업 중이며 원격 연결을 만들 수 없었습니다. 그 이유가 무엇일까요? – user2371684

+0

서버에 명령 줄 액세스 권한이있는 경우 mysql 명령 줄에 로그인하고 다음을 입력합니다. show variables; 포트 번호가 입력됩니다. – Difster

답변

0

두 번째 오류는 두 가지 대답을 참조하십시오.

PDOException SQLSTATE[HY000] [2002] Connection timed out on my local computer

'PDOExcpetion' with message 'SQLSTATE[HY000] [2002] No route to host

은 어느 당신은 원격 데이터베이스에 대한 액세스를 활성화해야하거나 시간에 시간을 변경 네트워크 IP 문제가 있습니다. 두 가지를 모두 확인하십시오. 이게 당신을 도울 수 있기를 바랍니다.

+0

다음 번에는 답변을 게시하지 말고이 링크 중 하나를 닫으려고 투표를하십시오. –

+0

당신은 절대적으로 맞지만 저는 그를 도와주고 싶습니다. –

관련 문제