Creo que he implementado con éxito mi sitio (muy básico) en fortrabbit, pero tan pronto como me conecto a SSH para ejecutar algunos comandos (como php artisan migrate
o php artisan db:seed
) recibo un mensaje de error:
[PDOException]
SQLSTATE[HY000] [2002] No such file or directory
En algún momento, la migración debe haber funcionado, porque mis tablas están allí, pero esto no explica por qué no funciona para mí ahora.
Respuestas:
El mensaje de error indica que se ha intentado una conexión MySQL a través de un socket (que no es compatible).
En el contexto de Laravel (artesano), es probable que desee utilizar un entorno diferente / correcto. Por ejemplo:
php artisan migrate --env=production
(o cualquier ambiente). Ver aquí .fuente
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
Actualización: Algunas personas han preguntado por qué funciona esta solución, por lo que he investigado 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" utiliza TCP (Protocolo de control de transmisión), lo que significa que en este caso se ejecuta a través del "Internet local" en su computadora, siendo mucho más confiable que el socket UNIX.
fuente
localhost
no funciona y127.0.0.1
funciona?A Unix socket file is used if you do not specify a host name or if you specify the special host name localhost.
dev.mysql.com/doc/refman/5.7/en/can-not-connect-to-server.htmlTengo 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, acabo de configurar la biblioteca mCrypt para comenzar. Después de eso, cuando estaba trabajando con modelos y DB recibí el error:
La razón que encontré es simplemente 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:
Le pedirá la contraseña relacionada. Luego, una vez que obtenga la solicitud mysql, escriba el siguiente comando:
Obtendrás algo como esto:
Mantenga el valor de la última fila:
En su
laravel
carpeta de proyecto, busque el archivo database.php donde configura los parámetros de conexión de la base de datos . En la sección mysql agregue la siguiente línea al final:Debes tener algo como esto:
¡Ahora solo guarde los cambios, vuelva a cargar la página y debe funcionar!
fuente
/Applications/MAMP/tmp/mysql/mysql.sock
Encontré el
[PDOException] SQLSTATE[HY000] [2002] No such file or directory
error por una razón diferente. Acababa de terminar de construir una nueva pila LAMP en Ubuntu 12.04 con Apache 2.4.7, PHP v5.5.10 y MySQL 5.6.16. Moví mis sitios nuevamente y los activé. Pero no pude cargar mi sitio basado en Laravel 4.2.x debido a lo[PDOException]
anterior. Entonces, verifiquéphp -i | grep pdo
y noté esta línea:Pero, en mi /etc/my.cnf el archivo de calcetines está realmente en
/var/run/mysqld/mysqld.sock
.Entonces, abrí mi php.ini y configuré el valor para
pdo_mysql.default_socket
:Luego, reinicié Apache y verifiqué
php -i | grep pdo
:Eso me lo arregló.
fuente
La respuesta de @stuyam resolvió el problema "No existe tal archivo o directorio" para mí
Pero luego tuve un error de "Conexión rechazada". Si alguien tuvo el mismo problema, mi solución para esto fue actualizar el archivo app / config / local / database.php para que el puerto sea 8889:
fuente
'port' => '33060'
pero esta respuesta me llevó allí!Si está utilizando Laravel Homestead, asegúrese de llamar a los comandos en el servidor.
Luego simplemente cd al directorio correcto y dispare su comando allí.
fuente
source ~/.zshrc
2.homestead up --provision
3.homestead ssh
vagrant ssh
en mi casoEn mi caso no tuve ningún problema, solo olvidé iniciar el servicio mysql ...
fuente
Opción de habilitación de usuario de Mamp Permitir acceso de red a MYSQL
fuente
Agregue la ruta mysql.sock en el archivo database.php como el siguiente ejemplo
Ejemplo
fuente
Funcionó después de cambiar de
DB_HOST=localhost
aDB_HOST=127.0.0.1
en el archivo .envfuente
localhost
no funciona?Esto se debe a que PDO trata el host "localhost" especialmente:
(de http://php.net/manual/en/ref.pdo-mysql.connection.php )
Cambiar localhost a 127.0.0.1 "forzará" el uso de TCP.
Nota: mysqli_connect funciona bien con localhost.
fuente
Sobre la base de la respuesta de @dcarrith ...
En lugar de editar los archivos de configuración, creé un alias en la ubicación que busca PHP que se conecta al verdadero mysql.sock. ( fuente )
Simplemente ejecute estos dos comandos (no es necesario reiniciar):
fuente
Paso 1
Encuentra la ruta a tu unix_socket, para hacerlo solo ejecuta
netstat -ln | grep mysql
Deberías obtener algo como esto
Paso 2
Toma eso y añadirlo en su unix_socket parámetro
Espero eso ayude !!
fuente
Estoy ejecutando en MAMP Pro y tuve este problema similar al intentar migrar (crear tablas db). Intenté algunas de estas sugerencias mencionadas también, pero no lo hice por mí.
Entonces, simplemente (después de una hora buscando en Google), agregué dos cosas a /config/database.php.
Funciona bien ahora!
fuente
Verifique su puerto cuidadosamente. En mi caso fue 8889 y estoy usando 8888. cambie "DB_HOST" de "localhost" a "127.0.0.1" y viceversa
fuente
Tuve estos problemas cuando estaba ejecutando mi aplicación usando contenedores docker.
La solución fue poner el nombre del contenedor del servicio MySQL que estaba usando en
docker_compose.yml
DB_HOST. En mi caso, fuedb
:Espero eso ayude.
fuente
A partir de Laravel 5, el nombre de usuario y la contraseña de la base de datos van en el archivo .env que existe en el directorio del proyecto, p. Ej.
Como puede ver, estas variables de entorno anulan las cadenas de 'forjar' aquí, por lo que cambiarlas no tiene ningún efecto:
Más información aquí https://mattstauffer.co/blog/laravel-5.0-environment-detection-and-environment-variables
fuente
Me encontré con este problema al ejecutar PHPUnit en Elixir / Gulp, y Homestead como mi entorno Vagrant.
En mi caso he editado el archivo de .env
DB_HOST=localhost
aDB_HOST=192.168.10.10
donde192.168.10.10
está el IP de mi anfitrión Vagrant / Homestead.fuente
Intente conectarse a localhost:
Intente conectarse a 127.0.0.1:
OK, solo comente / elimine la siguiente configuración de my.cnf (en OS X 10.5:)
/opt/local/etc/mysqlxx/my.cnf
para obtener:Por supuesto, detenga e inicie MySQL Server.
fuente
Tuve problemas similares al acceder a mi sitio web de Drupal. Lo arreglé abriendo la línea de comando y reiniciando mi servidor o servicio MySQL:
Esto debería funcionar. Si no es así, reinicie su servidor web local:
Eso debería bastar. Espero que también funcione para otros entornos. Tenga en cuenta que estos comandos generalmente requieren privilegios de superusuario.
fuente
Si está utilizando Laravel Homestead, aquí está la configuración
(incluye Vagrant-Virtual Machine)
.bash-profile
database.php
Terminal
fuente
Si alguien todavía está buscando la respuesta, simplemente verifique su archivo .env. Por alguna razón, laravel crea un archivo .env.example, por lo que todas estas respuestas no funcionaron para mí. Solucioné mi problema al cambiar el nombre de .env. a .env
fuente
Esto me sucedió porque MySQL no se estaba ejecutando. MySQL no se pudo iniciar porque me faltaba un
/usr/local/etc/my.cnf.d/
directorio.Esto fue requerido por mi
/usr/local/etc/my.cnf
archivo de configuración como un glob include (include /usr/local/etc/my.cnf.d/*.cnf
).Al ejecutar
mkdir /usr/local/etc/my.cnf.d
, y luego iniciar MySQL, se solucionó el problema.fuente
En mi caso, estaba ejecutando php artisan migrate en mi terminal mac, cuando necesitaba ssh en vagabundo y ejecutarlo desde allí. Espero que ayude a alguien el dolor de cabeza.
fuente
Tuve el mismo problema al usar el nombre del servicio Docker y MySQL
db
en el archivo docker_compose.yml:Agregué lo siguiente en el
.env
archivo:También debe asegurarse de que su host sea reconocible desde la aplicación php.
Fue porque PHP no descubrió qué host usar para conectarse.
fuente
Cuando use una VirtualMachine, asegúrese de ingresar a esa máquina y navegar a su carpeta de aplicaciones y llamar al comando php artisan migrate desde allí.
fuente
En mayo, simplemente había usado
en vez de
para mi configuración de larva de fragua usando granja. Supongo que esto significaba que el sitio estaba siendo atendido, pero el servidor MySQL nunca se inició. Cuando utilicé el último comando para iniciar mi caja vagabunda, el error desapareció.
fuente
Todas estas respuestas parecen pesadas ...
Acabo de crear un
.env
archivo; edité mibootstrap/app.php
archivo y descomenté la siguiente línea ...Dotenv::load(__DIR__.'/../');
Espero que esto ayude a alguien
fuente
Para cualquiera que intente crear una nueva conexión db que no esté en laravel, sino que se haya encontrado aquí buscando respuestas para ejecutar PDO desde la Terminal. Esto te sería de ayuda. Y puede refactorizarlo para que funcione mejor para usted.
¡Espero eso ayude!
fuente
En mi caso, tuve que eliminar la carpeta bootstrap / cache e intentarlo de nuevo.
Mi cenario fue después de una migración de servidor.
fuente