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
Ist es möglich, dass MySQL eine andere Portnummer auf Ihrem Server verwendet? – Difster
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
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