extension - Error al crear una conexión a PDO en PHP
install pdo php ubuntu (5)
Es posible que desee modificar php.ini para que PDO pueda encontrar mysql.sock especificando pdo_mysql.default_socket = /opt/lampp/var/mysql/mysql.sock
(en el caso de xampp). No olvide reiniciar Apache después de cambiar php.ini.
(Lo siento, esta parece ser una solución repetida).
Hoy, eliminé y volví a instalar la última versión de lampp para pasar a php 5.30, y de repente una aplicación muy simple no puede conectarse a la base de datos mysql. Estoy usando PDO para conectarme y recibir el siguiente error:
Warning: PDO::__construct() [pdo.--construct]: [2002] Invalid argument (trying to connect
via unix://) in /home/raistlin/www/todoapp/home.php on line 9
Fatal error: Uncaught exception ''PDOException'' with message ''SQLSTATE[HY000] [2002]
Invalid argument'' in /home/raistlin/www/todoapp/home.php:9 Stack trace: #0
/home/raistlin/www/todoapp/home.php(9): PDO->__construct(''mysql:host=loca...'', ''USER'',
''PASSWORD'') #1 {main} thrown in /home/raistlin/www/todoapp/home.php on line 9
No estoy captando el error en este momento, por el bien de depurarlo.
El siguiente código es suficiente para replicar el problema en mi sistema:
<?php
$DBACCESS = array(
"connstring"=>"mysql:host=localhost;dbname=todoapp",
"host"=>"localhost",
"user"=>"user",
"password"=>"password",
"todoapp"=>"todoapp"
);
echo implode(''<br />'',$DBACCESS);
$dbh = new PDO($DBACCESS[''connstring''],$DBACCESS[''user''],$DBACCESS[''password'']);
$dbh = null;
?>
Al mirar en línea, encontré a una o dos personas con el mismo problema, pero ninguno ha recibido una respuesta, y mucho menos una respuesta operativa. ¿Alguien sabe lo que está pasando? ¿Hay algo que extrañé en la configuración? ¿Qué debo hacer para solucionarlo?
Estoy usando MAMP 2.0.1 y Symfony 1.4 con Doctrine para este proyecto.
La tercera opción funcionó para mí con una pequeña modificación: en /config/databases.yml
dsn: ''mysql:unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock;dbname=MY_DB_NAME;''
La causa más común de un error como este sería que MySQL no se está ejecutando.
Por lo general, significa que debe especificar TCP / IP (1) o decirle a MySQL dónde está su socket Unix (2):
- "mysql: host = 127.0.0.1" o "mysql: host = localhost; port = 3306"
- "mysql: unix_socket = / var / run / mysqld / mysqld.sock"
También puede usar 127.0.0.1, en lugar de especificar "localhost", en su cadena de conexión db para evitar este problema por completo.