2012-08-03 18 views
6

Estoy intentando conectar con la base de datos MySQL remoto mediante PDO, pero falla con el error:PHP MySQL DOP a falla, mysql_connect funciona bien

Connection failed: SQLSTATE[28000] [1045] Access denied for user 'my_user'@'some.ip.address' (using password: YES) 

Ésta es la forma en que estoy tratando de conectar: ​​

$dsn = "mysql:host=sql.my_domain.nazwa.pl;dbname=my_db;port:3307"; 
$user = "my_user"; 
$password = "my_password"; 

try { 
    $this->db = new PDO($dsn, $user, $password); 
} catch (PDOException $e) { 
    echo 'Connection failed: ' . $e->getMessage(); 
} 

y falla. Pero de esta manera:

mysql_connect('sql.my_domain.nazwa.pl:3307', 'my_user', 'my_password'); 

funciona bien.

Alguien tiene alguna idea de lo que puede estar mal con PDO, su configuración, los parámetros que configuro o tal vez este servidor específico (nazwa.pl)?

[SOLUCIONADO] Ok, por lo que era simple (pero también difícil de notar ...) error de sintaxis, debe ser un lugar de =: en port parte de dsn.

Respuesta

5

intente reemplazar:

$dsn = "mysql:host=sql.my_domain.nazwa.pl;dbname=my_db;port:3307"; 

con

$dsn = "mysql:host=sql.my_domain.nazwa.pl;dbname=my_db; port=3307"; 
+0

¿Cuál es la diferencia? – PeeHaa

+1

@PeeHaa ¿Algo de formateo? Siempre he usado un PDO en la misma PC que Apache, pero los documentos que encontré implicaban la sintaxis como se indica anteriormente. – Fluffeh

+0

Eso es vergonzoso ... No me di cuenta, que después de 'port' debería permanecer '=' no ':'. Ahora funciona. Muchas gracias, esa es la respuesta correcta. – zelazowy

1

Si está intentando conectarse a la base de datos en algún otro servidor Asegúrese de que su servidor SQL le da el acceso en el puerto en particular en su caso 3307 desde la dirección IP de los lugares donde están alojados sus códigos. Si ambos servidores son los mismos, pruebe con localhost o 127.0.0.1

Cuestiones relacionadas