Ich habe eine MySQL RDS-Instanz in AWS eingerichtet. Nachdem ich die Instanz instanziiert habe, habe ich versucht, sie von der Befehlszeile meines EC2 zu verbinden, und es funktioniert ohne Problem. Wenn ich versuche, über meinen PHP-Code eine Verbindung herzustellen, bekomme ich einen Fehler. Unten ist der Beispielcode, den ich versuchte, meine Konnektivität zu testen.Verbindung mit AWS RDS über PDO nicht möglich
<?php
try{
$dbh = new pdo('aws-test-db.hibizibi.us-west-2.rds.amazonaws.com;dbname=test',
'root',
'password',
array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
die(json_encode(array('outcome' => true)));
}
catch(PDOException $ex){
die(json_encode(array('outcome' => false, 'message' => 'Unable to connect')));
}
Ich bekomme {"outcome":false,"message":"Unable to connect"}
. Mein ursprünglicher Code verwendet idiorm (das PDO verwendet). Der Abschnitt, der mit Datenbank verbindet sieht aus wie folgt:
# configure ORM
ORM::configure('mysql:host='.DB_SERVER.';dbname='.DB_NAME);
ORM::configure('username', DB_SERVER_USERNAME);
ORM::configure('password', DB_SERVER_PASSWORD);
Aus der obigen ich die folgenden Fehler Spur erhalten:
SQLSTATE[HY000] [2005] Unknown MySQL server host 'aws-test-db.hibizibi.us-west-2.rds.amazonaws.com:3306' (11)
#0 /var/www/html/main/admin/applications/vendors/idiorm/idiorm.php(255): PDO->__construct('mysql:host=aws-...', 'root', 'password', NULL)
#1 /var/www/html/main/admin/applications/vendors/idiorm/idiorm.php(237): ORM::_setup_db('default')
UPDATE
ich mein Testcode aktualisiert, um zu versuchen Verbinden mit mysql-Erweiterung und es funktionierte mit mysql, aber nicht PDO
<?php
$servername = "aws-test-db.hizibizi.us-west-2.rds.amazonaws.com";
$username = "root";
$password = "password";
$dbname='test';
try{
$dbh = new pdo(
'mysql:'.$servername.';dbname='.$dbname.';',
$username,
$password,
array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)
);
die(json_encode(array('outcome' => true)));
} catch(PDOException $ex) {
echo json_encode(array('outcome' => false, 'message' => $ex->getMessage()))."\n";
}
// Create connection
$conn = mysqli_connect($servername, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully\n";
Jetzt bekomme ich {"outcome":false,"message":"SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '\/var\/lib\/mysql\/mysql.sock' (2)"}
, während ich versuche, über PDO zu verbinden. Mein Versuch durch mysql ist erfolgreich. Scheint so, als ob das Problem speziell bei PDO liegt. Kann ich etwas überprüfen?
Vermissen Sie $ dbport = $ _SERVER ['RDS_PORT']; im PHP-Code? – error2007s
sollte es 3306 nicht standardmäßig versuchen? –
Ersetzen Sie aws-test-db.hibizibi.us-west-2.rts.amazonaws.com; dbname = test; port = 3306; in dbh und dann sehen, ob Sie in der Lage sind zu verbinden? – error2007s