> Faqs > Connection refused al hacer sail artisan migrate

Connection refused al hacer sail artisan migrate

Estoy intentando correr las migraciones de un proyecto laravel que acabo de instalar y funciona con Sail.

He seguido las instrucciones para generar todos los servicios y restaurar las dependencias de composer, tal como se comenta en la guía de sail para restaurar.

Pero luego, al ejecutar el comando de las migraciones:

sail artisan migrate

Me sale este error:

Illuminate\Database\QueryException SQLSTATE[HY000] [2002] Connection refused (Connection: mysql, SQL: select table_name as `name`,

Me llama la atención el "Connection refused". ¿Cómo puedo solucionarlo?

Respuestas

Verifica que tienes correcto el .env de tu proyecto, en lo que respecta a los datos para la base de datos. Podría ser algo así:

DB_CONNECTION=mysql
DB_HOST=mariadb
DB_PORT=3306
DB_DATABASE=tu_ddbb
DB_USERNAME=sail
DB_PASSWORD=password

O quizás algo así:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=tu_ddbb
DB_USERNAME=sail
DB_PASSWORD=password

Verificar DB_HOST

(En los dos anteriores ejemplo solo he cambiado el DB_HOST)

Fíjate q el .env_example predeterminado de Laravel DB_HOST está así: DB_HOST=127.0.0.1 y eso no funciona en Sail ya que el servidor de la base de datos no es la ip de localhost. Revisa que no sea ese tu problema.

Para saber que DB_HOST debes poner tienes que verificar el motor de base de datos que tienes en uso en el archivo docker-compose.yml.

Puede haber un contenedor que se llame "mariadb", "mysql" u otra cosa... aparece en un código como este:

(ej si fuera mariadb)

mariadb:
        image: 'mariadb:10'
        ports:

Verificar que no se use root como usuario

Otro detalle que debes verificar es que el usuario no sea root. Si no me equivoco el .env_example predeterminado de laravel lo tiene el user en root, que tampoco funcionará.

Comandos Sail relevantes

Para cada vez que cambias el .env tienes que restaurar los volúmenes...

haz esto para salir de Sail y borrar el volumen:

sail down -v   

Y si quieres eliminar los volúmenes de todos tus contenedores con docker se hace con este comando.

docker volume prune --force

Pero este último comando de docker podría eliminar todos los volúmenes de otros proyectos sail, cuidado con eso!!!

Luego haces el

sail up

y por último el

sail artisan migrate
Julian
1147 49 87 46