Siéntete libre de compartir nuestro espacio y códigos en tus redes, necesitamos tu ayuda para ampliar esta comunidad.
Solución:
Laravel 4: Cambiar “anfitrión” en el
app/config/database.php
archivo de “localhost” a “127.0.0.1”Laravel 5+: Cambie “DB_HOST” en el
.env
archivo de “localhost” a “127.0.0.1”
Tuve exactamente el mismo problema. Ninguna de las soluciones anteriores funcionó para mí. Resolví el problema cambiando el “host” en el archivo /app/config/database.php de “localhost” a “127.0.0.1”.
No estoy seguro de por qué “localhost” no funciona de forma predeterminada, pero encontré esta respuesta en una pregunta similar resuelta en una publicación de Symfony2. https://stackoverflow.com/a/9251924/1231563
Actualizar:
Algunas personas han preguntado por qué funciona esta solución, así que investigué un poco sobre el tema. Parece que usan diferentes tipos de conexión como se explica en esta publicación https://stackoverflow.com/a/9715164/1231563
El problema que surgió aquí es que “localhost” usa un socket UNIX y no puede encontrar la base de datos en el directorio estándar. Sin embargo, “127.0.0.1” usa TCP (Protocolo de control de transmisión), lo que esencialmente significa que se ejecuta a través de “Internet local” en su computadora, siendo mucho más confiable que el zócalo UNIX en este caso.
El mensaje de error indica que se intentó una conexión MySQL a través de socket (que no es compatible).
En el contexto de Laravel (artesanal), probablemente desee utilizar un entorno diferente/correcto. P.ej: php artisan migrate --env=production
(o cualquier entorno). Mira aquí.
Tengo el mismo problema y estoy ejecutando Mac OS X 10.10 Yosemite. He habilitado el servidor Apache y PHP que ya viene con el sistema operativo. Luego configuré la biblioteca mCrypt para comenzar. Después de eso, cuando estaba trabajando con modelos y DB, recibí el error:
[PDOException]
SQLSTATE[HY000] [2002] No such file or directory
La razón por la que encontré es porque PHP y MySQL no pueden conectarse por sí mismos. Para solucionar este problema, sigo los siguientes pasos:
-
Abra una terminal y conéctese a mysql con:
mysql -u root -p
-
Le pedirá la contraseña relacionada. Luego, una vez que obtenga el mensaje mysql, escriba el siguiente comando:
mysql> show variables like '%sock%'
-
Obtendrás algo como esto:
+-----------------------------------------+-----------------+ | Variable_name | Value | +-----------------------------------------+-----------------+ | performance_schema_max_socket_classes | 10 | | performance_schema_max_socket_instances | 322 | | socket | /tmp/mysql.sock | +-----------------------------------------+-----------------+
-
Mantenga el valor de la última fila:
/tmp/mysql.sock
-
En tus
laravel
carpeta del proyecto, busque el base de datos.php archivo allí es donde configura los parámetros de conexión DB. En el mysql sección agregue la siguiente línea al final:'unix_socket' => '/tmp/mysql.sock'
-
Debes tener algo como esto:
'mysql' => array( 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'SchoolBoard', 'username' => 'root', 'password' => 'venturaa', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'unix_socket' => '/tmp/mysql.sock', ),
¡Ahora simplemente guarde los cambios, vuelva a cargar la página y debe funcionar!