Configuración de Laravel en un error de migración de artesano php de Mac: ningún archivo o directorio

  1. Cogió un proyecto de laravel perfectamente funcional desde un git a un mac que ejecutaba MAMP. Project funcionó perfectamente en una máquina Linux.
  2. instalación del compositor
  3. php artesanal migrate, obtuvo el siguiente error:

    [PDOException] SQLSTATE[HY000] [2002] No such file or directory 

NB: php -v es 5.5 y mysql -v es 5.5 de la terminal Aquí está la parte de mi config / database.php

  'mysql' => array( 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'essays', 'username' => 'root', 'password' => 'root', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ), 

Traté de reemplazar localhost con 127.0.0.1 sin ningún resultado. Amablemente ayuda …

Editar: agregué estas tres líneas en mi php.ini

 mysql.default_socket = /var/run/mysqld/mysqld.sock mysqli.default_socket = /var/run/mysqld/mysqld.sock pdo_mysql.default_socket = /var/run/mysqld/mysqld.sock 

También agregué este enlace simbólico:

 sudo mkdir /var/mysql cd /var/mysql && sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock 

Pero eso no solucionó. También saqué un nuevo proyecto laravel nuevo de git y me encontré con el mismo error después de la composer install luego php artisan migrate

  [PDOException] SQLSTATE[HY000] [2002] No such file or directory 

La versión mac es 10.7.4

Si está utilizando MAMP, asegúrese de agregar la clave unix_socket con un valor de la ruta que mysql.sock reside en MAMP.

 'mysql' => array( 'driver' => 'mysql', 'host' => 'localhost', 'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock', 'database' => 'database', 'username' => 'root', 'password' => 'root', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ), 

No asums tu unix_socket que sería diferente de uno a otro, intenta encontrarlo.

En primer lugar, obtenga su ubicación de unix_socket .

 $ mysql -uroot -p 

Ingrese su contraseña mysql e inicie sesión en su servidor mysql desde la línea de comando.

 mysql> show variables like '%sock%'; +---------------+---------------------------------------+ | Variable_name | Value | +---------------+---------------------------------------+ | socket | /opt/local/var/run/mysql5/mysqld.sock | +---------------+---------------------------------------+ 

Su unix_soket podría ser diferente.

Luego tienes 2 soluciones para resolver tu problema:

(1) Cambie su config/database.php

  'mysql' => array( 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'essays', 'username' => 'root', 'password' => 'root', 'unix_socket' => '/opt/local/var/run/mysql5/mysqld.sock', //Your sock got from above 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ), 

(2) Cambie su php.ini, encuentre su archivo php.ini de

  

Quizás instales muchos php con versiones diferentes, así que no asums la ubicación de tu archivo php.ini, obténgalo de tu 'phpinfo';

Cambia tu php.ini:

 mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock pdo_mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock 

Luego reinicia tu apache o php-fpm.

Tenía el mismo problema, pero ahora está funcionando para mí.

Si alguien todavía tiene problemas, intente esto:

  • Asegúrese de que su bootstrap/start.php contiene su nombre de host real, no el nombre de su host virtual. Ingrese el hostname de hostname en la terminal para obtener su nombre de host. Como es una matriz, creo que puede ingresar tanto su nombre de host como los nombres de su (s) host (es) virtual (es).
  • Reemplazar “localhost” con “127.0.0.1”.

Si está utilizando XAMPP, la solución es:

 'mysql' => array( 'driver' => 'mysql', 'unix_socket' => '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock', 'host' => 'localhost' ) 

Esto funciona para mí en Laravel 5.0, cambie el DB_HOST = 127.0.0.1: 33060 en el archivo .env.

Otras respuestas no funcionan …

Para Laravel 5.0+, cambie localhost a 127.0.0.1 en su archivo .env antes de ir a jugar con Unix Sockets, etc. Esto funcionó para mí.

Noobs tenga cuidado: para cualquiera que use Laravel 5 y use material de aprendizaje más antiguo, tenga en cuenta que hubo un cambio bastante marcado en la estructura de carpetas de versiones anteriores, aunque esto parece ser para mejor; consulte este artículo https://mattstauffer.co/blog /laravel-5.0-directory-structure-and-namespace

Otra solución es agregar el número de puerto en la clave de host. En este caso, MAMP usa el 8889 por defecto:

 'mysql' => array( 'driver' => 'mysql', 'host' => 'localhost:8889', 'database' => 'essays', 'username' => 'root', 'password' => 'root', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ), 

Si está utilizando Laravle 5.1.11 versión + MAC + MAMPP

tienes que agregar “Unix_socket” en el archivo “yourapp” /app/config/database.php

 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock', 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, ], 

Unix_socket param se agregó a la unidad de configuración mysql anterior.