Error de conexión de base de datos de Laravel Sail rechazada

4 minutos de lectura

Avatar de usuario de Rutul Thakkar
Rutul Thakkar

Creé un nuevo proyecto de laravel en laravel 8. Configuré la instalación de Sail correctamente, todo funciona bien para la conexión de la base de datos en local, pero cuando intento conectar mi base de datos usando sail, me da un error.

SQLSTATE[HY000] [2002] Conexión rechazada (SQL: seleccione * de information_schema.tables donde table_schema = laravel8 y table_name = migraciones y table_type=”BASE TABLE”)

Ya he borrado mis archivos de configuración y caché.

avatar de usuario de willpercey-gb
willpercey-gb

Estaba investigando el mismo problema y encontré esto.

https://github.com/laravel/sail/blob/7457004969dd62fa727fbc596bb2accccb1409a5/src/SailServiceProvider.php#L31

El código muestra un comando artesanal agregado por laravel sail: sail:install que sobrescribe las variables de host de su archivo .env con nombres de servicio.

Cambié DB_HOST de 127.0.0.1 a mysql y se arregló

  • Hola, estoy enfrentando el mismo problema. DB_HOST ya es mysql. Puedo iniciar sesión en la base de datos y ver que está vacío. Cuando intento ejecutar “migrar artesanal de vela”, aparece el mismo mensaje de error. ¿Alguna idea de que podría ser?

    – Factura

    10/01/2021 a las 21:45

  • Esto funciona, pero tengo mucha curiosidad por saber el significado de “mysql”: ¿es una palabra clave especial utilizada por Laravel al acceder a dbhost, o se basa en el nombre de la imagen acoplable de mysql? EDITAR: en realidad, podría estar invocando mysql directamente desde la línea de comando?

    – Chris

    9 de febrero de 2021 a las 12:54


  • Buena respuesta, ese fue exactamente mi caso.

    – Hasnat Safder

    23 de febrero de 2021 a las 9:55

  • Genial eso funcionó. tuve que sail down -v elimine el volumen mysql almacenado con la configuración incorrecta y sail up -d para reconstruir. Después de eso funcionó.

    – Alexander Taubenkorb

    20 de julio de 2021 a las 13:06


  • Estoy usando mariadb, así que necesitaba agregar DB_HOST=mariadb en mi archivo .env y container_name: mariadb en docker-compose.yml .

    – Guau

    21 oct 2021 a las 15:47


En cmd solo ejecuta este comando

docker network inspect bridge

Obtendrá una respuesta como (similar) a esta:

[
{
    "Name": "bridge",
    "Id": "695c284c7b184839edf97d48161922dfe6c4827d0db917c3278f5634af7e00e2",
    "Created": "2022-02-22T22:17:30.8583513Z",
    "Scope": "local",
    "Driver": "bridge",
    "EnableIPv6": false,
    "IPAM": {
        "Driver": "default",
        "Options": null,
        "Config": [
            {
                "Subnet": "172.17.0.0/16",
                "Gateway": "172.17.0.1"
            }
        ]
    },
    .....
}

]

Copiar “Gateway“dirección IP y reemplazar con DB_HOST valor en .env archivo. Funcionará

  • Gracias. Recibo otro error, pero parece ser debido a mi versión de PHP (stackoverflow.com/a/50027581/7242535)

    – nelson6e65

    7 sep 2022 a las 22:37

  • Muchas gracias @softiso! También podríamos saber por qué el mysql el valor deja de funcionar?

    – Marlo

    20 de septiembre de 2022 a las 9:51

si desea ejecutar mysql en un puerto diferente, por ejemplo, 3307 como se muestra a continuación

ports:
  - 3307:3306

debe agregar la variable de entorno FORWARD_DB_PORT al archivo .env como este

DB_PORT=3306 // this is for container port
FORWARD_DB_PORT=3307 // this is for local port

  • Esto es exactamente lo que necesitaba ya que moví el puerto docker mysql. Gracias

    – Adrián Cornish

    7 dic 2022 a las 16:08

Cambiando DB_USERNAME de navegar a raíz trabajó para mi. Supongo que navegar no tenía los privilegios requeridos.

DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=database
DB_USERNAME=root # changed from sail
DB_PASSWORD=password

Tuve este mismo problema después de crear un segundo proyecto de vela en mi ventana acoplable. No estaba (todavía no está) aceptando el nombre de usuario o la contraseña de vela, pero pude ingresar con la raíz, lo que me dio el error que diste anteriormente. Fui a la aplicación Desktop Docker, hice clic en el contenedor en ejecución, encontré la parte de mysql y ejecuté la CLI, escribí mysql y luego ejecutó la consulta CREATE DATABASE yourdatabasename; la migración funcionó perfectamente bien.

Avatar de usuario de eOssa
eOssa

Tal vez debería hacer coincidir las variables de entorno de .env.testing, ya que, como dice willpercey-gb, el sail:install El comando actualiza las variables de entorno de .env, pero no de .env.testing.

Avatar de usuario de Raphael Amponsah
Rafael Amponsa

En primer lugar, detenga todos los servicios que usen brew, especialmente MySQL

brew services stop MySQL

en su archivo docker-yaml:

laravel.test
   ports:
     - '70:80'
mysql:
   ports:
     - '3456:3306'

Ahora ejecute su comando de migración de artesanos de vela.

Esto debería solucionar tu problema.

  • No necesita detener el servicio mysql si ha cambiado el puerto de host. En su caso, el puerto host es 3456

    – Phillip Mwaniki

    27/10/2022 a las 14:35

¿Ha sido útil esta solución?