pdo_mysql extension php pdo lampp

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):

  1. "mysql: host = 127.0.0.1" o "mysql: host = localhost; port = 3306"
  2. "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.