2011-01-24 16 views
11

Conseguir un error DOP cuando se trata de hacer php symfony doctrine:insert-sql
El error que consigo:
error de conexión PDO cuando se utiliza Symfony y MAMP

 
Warning: PDO::__construct(): [2002] Connection refused (trying to connect via tcp://127.0.0.1:3306) in /Users/johannes/Programmering/PHP/htdocs/symfony/sfprojects/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php on line 470 

databases.yml

 
    all: 
    doctrine: 
    class: sfDoctrineDatabase 
    param: 
     dsn: mysql:host=127.0.0.1;dbname=jobeet; 
     username: root 
     password: root 

Haciendo un mysql -u root -p jobeet con "root" como contraseña me da acceso, así que no hay problema. Y sí, el mysql que corro es de MAMP.

Gracias por cualquier ayuda.

+0

necesita realmente esta parte? '; mysql: unix_socket =/Applications/MAMP/tmp/mysql/mysql.sock' –

+0

me sale el error con o sin – Johannes

+0

quería decir que cambiar localhost a 127.0.0.1 lo arreglé (estoy usando xampp) – Marin

Respuesta

7

MAMP por defecto no permite conexiones TCP. Puede activarlo o usar enchufes.

Cambiar su DSN como @ Tom sugiere debería solucionar sus problemas. Raro, ya que no es más que el uso de localhost en lugar de 127.0.0.1 hace que MySQL se conecta a través de sockets.

http://dev.mysql.com/doc/refman/5.0/en/connecting.html:

En Unix, los programas MySQL tratan el nombre de host localhost especialmente, de una manera que es probable diferente de lo que esperas comparado con otros programas basados ​​en la red. Para las conexiones a localhost, los programas MySQL intentan conectarse al servidor local mediante el uso de un archivo de socket Unix . Esto ocurre incluso si se proporciona una opción --port o -P en especificando un número de puerto. Para asegurarse de que el cliente realiza una conexión TCP/IP al servidor local, use --host o -h para especificar un valor de nombre de host de 127.0.0.1, o la dirección IP o el nombre del servidor local. También puede especificar el protocolo de conexión explícitamente, incluso para localhost, por utilizando el --protocol = opción TCP.

+0

Bueno, creo que tanto mi respuesta como @ Tom son válidas. Es solo que necesita hacer alguna configuración adicional a MAMP. Obtuviste un mensaje de "no existe ese archivo o directorio" porque MAMP guarda el socket en una ubicación no predeterminada. –

+1

nice, usando 'localhost' en lugar de 127.0.0.1 fue el truco; no es necesario abrir el acceso fuera de lo local como sugiere @James –

1

Se ve bien. Aquí sería el equivalente exacto de un trabajo databases.yml estoy utilizando, en caso de que sea de alguna utilidad:

dsn: 'mysql:host=localhost;dbname=jobeet' 
+0

cambiando el host de 127.0.0.1 a localhost, me da este error No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) Johannes

3

Tuve el mismo error al intentar construir mis tablas en Symfony y usar MAMP. He arreglado el problema cambiando mi línea DSN, en el archivo databases.yml, a lo siguiente: 2.x

dsn: 'mysql:host=localhost;dbname=jobeet;unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock' 
13

MAMP PRO
yo era capaz de resolver esto y muchos problemas similares simplemente desactivando "Permitir acceso local solamente" en las preferencias de MySQL en el panel de control de MAMP.

enter image description here

MAMP PRO 3.x
según lo declarado por Kendrick: enter image description here

+0

gracias, esto funcionó para mí –

+0

su trabajó para mí 1 –

+0

esto funcionó! 1! – Stormsson

Cuestiones relacionadas