2017-04-14 2 views
0

Ich erstelle eine PDO-Datenverbindung. Die Verbindungen funktionieren gut auf localhost. Aber wenn ich eine Verbindung zu meinem Remote-DB, und verwenden Sie genau die gleichen Anmeldeinformationen, die ich zuvor verwendet habe, bekomme ich eine leere Seite, keine Fehlermeldungen, nur eine leere Seite.SQLSTATE [HY000] [2002] Zeitüberschreitung der Operation

Die gleichen Anmeldeinformationen, die an einem vorherigen Projekt arbeiten, wurden mit mysqli gemacht, diese ist mit PDO gemacht.

Ich habe zwei Arten von PDO-Verbindungscode ausprobiert, keiner von ihnen funktioniert.

erste:

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

Zweite ein:

$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(); 
    } 

Auch wenn beide arbeiten Verbindungen in localhost, habe ich versucht, nur lokal im Browser diese Verbindung Seite zu laden, die Faust Option gab mir Dieser Fehler:

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

und die zweite Option gab mir den folgenden Fehler:

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

Was vermassele ich in meinem Code?

versuchte ich dann mit durch das Terminal zu verbinden:

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

und bekam folgende Fehlermeldung:

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$

ich nicht glaube, ich habe Zugang zum Terminal auf meinem Remote-Rechner, so dass ich kann keine globalen Variablen wie 'Port' anzeigen; cmd -danke

+0

Ist es möglich, dass MySQL eine andere Portnummer auf Ihrem Server verwendet? – Difster

+0

Wie kann ich herausfinden, ob eine Portnummer existiert? Ich habe phpMyAdmin auf dem Server ausgeführt. Ich arbeite lokal auf mysqlWorkbench, und konnte keine Remote-Verbindung erstellen, das könnte ein Grund dafür gewesen sein? – user2371684

+0

Wenn Sie auf dem Server über Befehlszeilenzugriff verfügen, melden Sie sich bei der mysql-Befehlszeile an und geben Sie Folgendes ein: show variables; Die Portnummer wird dort sein. – Difster

Antwort

0

Für Ihren zweiten Fehler, mit Bezug auf diese beiden Antworten.

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

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

Entweder müssen Sie den Zugriff auf Remote-Datenbank aktivieren oder Sie Netzwerk-IP-Problem haben, die Zeit zu Zeit ändert. Bitte überprüfe beide Dinge. Ich hoffe, dies wird dir helfen.

+0

das nächste Mal, nicht eine Antwort posten, aber stimmen mit einem dieser Links zu schließen –

+0

Sie sind absolut richtig, aber ich hatte keine Privilegien zu kommentieren, während ich ihm helfen will .. Danke –

Verwandte Themen