Migración de Laravel 4: instalar ErrorException

php artisan migrate:install {"error":{"type":"ErrorException","message":"PDO::__construct(): [2002] Connection refused (trying to connect via tcp:\/\/127.0.0.1:3306)","file":"\/Applications\/MAMP\/htdocs\/DRCSports\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Connectors\/Connector.php","line":47}} 

En mi database.php he actualizado la información a mysql

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

No estoy seguro de si estoy entendiendo bien el error, pero a mí me parece que mi laravel no se está conectando a mysql correctamente. Si ese es el caso, no tengo ni idea de cómo solucionarlo.

El problema es que mysql se está ejecutando en el puerto 8888, mientras que el valor de puerto predeterminado de Laravel es 3306 (ya que es el puerto predeterminado de los servidores de MySQL).

La solución es agregar la clave ‘port’ a la matriz (por ejemplo: ‘port’ => 8888) y hará el trabajo.

Esto es lo que hice … en /app/config/app.php

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

y en la parte inferior del código php

‘redis’ => array (

  'cluster' => false, 'default' => array( 'host' => '127.0.0.1', 'port' => 8888, 'database' => 0, ), ), 

tiene que funcionar …

Experimenté problemas (Laravel 4) cuando utilicé MySQL en un puerto distinto de 3306.

Una aplicación ejecutada por un navegador espera la siguiente syntax de aplicación / configuración / base de datos:

 'mysql' => array( ... 'host' => 'localhost', 'port' => '8889', ... ) 

Mientras que el artesano de ejecución de línea de comandos espera la siguiente syntax:

 'mysql' => array( ... 'host' => 'localhost:8889', ... ) 

El problema se describe aquí:
https://github.com/laravel/laravel/issues/1182

La mayoría de los artículos sugieren una solución alternativa utilizando entornos Laravel, pero da como resultado archivos de configuración duplicados y viola el principio DRY (No repetir), así que aquí hay otra alternativa:

En la parte superior de la aplicación / config / database.php:

 $my_hostname = 'localhost'; $my_port = '8889'; $my_database = 'database'; $my_username = 'username'; $my_password = 'password'; if (App::runningInConsole()) { // artisan runs from the command line // change 'localhost' to 'localhost:8889' $my_hostname = $my_hostname.':'.$my_port; } 

Y más abajo:

 'mysql' => array( 'driver' => 'mysql', 'host' => $my_hostname, 'port' => $my_port, 'database' => $my_database, 'username' => $my_username, 'password' => $my_password, 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ), 

Aclamaciones

Cambia la información de tu base de datos en tu config / database.php y .env.

Hice estos cambios y trabajé como un campeón:

en database.php: host: localhost: 8889 Puerto: 8889 y mi mamp tiene una contraseña, así que había dos formas de poner esa contraseña en el archivo database.php o en el archivo .env Cambié la contraseña ” value to ‘forge ‘y luego use mi contraseña de MAMP en el archivo .env por cierto, puede ver su información específica sobre MAMP en la aplicación MAMP en la pestaña del puerto (MySQL uno)

Asegúrese de editar esta parte del archivo “.env”.

 DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=8889 DB_DATABASE=blog DB_USERNAME=root DB_PASSWORD=root 

Esto funcionó para mí.

Supongo que puedes resolver este problema agregando el siguiente código dentro de la syntax de la aplicación / config / base de datos:

 'mysql' => array( ... 'pconnect' => 'TRUE', ... )