2017-04-14 78 views
0

我正在創建一個pdo數據連接。本地主機上的連接工作正常。 但是,當我連接到我的遠程數據庫,並使用完全相同的憑據,我以前用過,我得到一個空白頁面,沒有錯誤信息,只是一個空白頁面。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); 

第二個:

$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$

我不認爲我有我的遠程計算機上的終端接入,所以我不能做SHOW GLOBAL VARIABLES LIKE'PORT'; 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

你是絕對正確的,但我沒有特權評論,而我想幫助他..謝謝 –

相關問題