⚙️ Configuración de la Base de Datos y Migraciones Iniciales

⚙️ Configuración de la Base de Datos y Migraciones Iniciales

      En este nuevo paso, aprenderemos a conectar nuestro proyecto Laravel con una base de datos para almacenar información como usuarios, productos, pedidos y más. Laravel utiliza migraciones para crear y mantener las tablas dentro de la base de datos de forma organizada y controlada.

      Este proceso es fundamental, ya que una aplicación sin base de datos no puede guardar ni gestionar datos. Vamos a trabajar tanto la configuración del archivo .env como la ejecución de las migraciones iniciales que Laravel trae por defecto.

      A lo largo de este tema también abordaremos los errores más comunes de conexión con MySQL y sus soluciones, asegurando que tu entorno esté completamente funcional antes de pasar a la creación de modelos y controladores.

📋 Índice de pasos a seguir

  1. Verificar el servicio MySQL en Docker
  2. Configurar la conexión en el archivo .env
  3. Crear la base de datos del proyecto
  4. Probar la conexión desde Laravel
  5. Ejecutar las migraciones iniciales
  6. Solución de errores comunes

      Una vez completados estos pasos, tu aplicación estará lista para comenzar a construir las tablas personalizadas del sistema, como las de usuarios, productos o pedidos.

🐬 Paso 11.1: Verificar el servicio MySQL en Docker

      Antes de conectar Laravel con la base de datos, debemos asegurarnos de que el contenedor de MySQL esté ejecutándose correctamente dentro de Docker. Si el servicio MySQL no está activo o presenta errores, Laravel no podrá establecer conexión y mostrará mensajes como SQLSTATE[HY000] [2002] Connection refused o php_network_getaddresses: getaddrinfo failed.

Verificar contenedores activos

      Desde tu terminal de Ubuntu (WSL2), ejecuta el siguiente comando para ver los contenedores actualmente en ejecución:

docker ps

      Si Docker está funcionando correctamente, deberías ver una salida similar a esta:

CONTAINER ID   IMAGE                    COMMAND                  STATUS           PORTS
a8b4c12f3e91   mysql/mysql-server:8.0   "/entrypoint.sh mysq…"   Up 2 minutes     0.0.0.0:3306->3306/tcp
b2c1a6d9f8e3   sail-8.4/app             "start-container"        Up 2 minutes     0.0.0.0:80->80/tcp

      En este caso, el contenedor mysql/mysql-server:8.0 corresponde al servicio de base de datos. Si aparece con el estado Up, significa que MySQL está en ejecución y accesible.

Reiniciar el servicio MySQL

      Si no aparece ningún contenedor de MySQL o si el estado es Exited, puedes reiniciarlo fácilmente ejecutando:

./vendor/bin/sail up -d

      Este comando inicia todos los servicios definidos en el archivo docker-compose.yml, incluyendo MySQL, Laravel y otros contenedores necesarios.

Verificar estado de salud del contenedor

      Una vez iniciado, puedes comprobar si MySQL está “sano” dentro de Docker con el siguiente comando:

docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"

      Si ves algo como (healthy) al final del estado, significa que MySQL está listo para aceptar conexiones.

Errores comunes y soluciones

⚠️ Error 1: “Connection refused”

Ocurre cuando el contenedor MySQL no está en ejecución o aún no ha terminado de inicializarse.

✅ Solución:
  • Ejecuta nuevamente ./vendor/bin/sail up -d.
  • Espera unos segundos antes de intentar reconectar.
⚠️ Error 2: “Temporary failure in name resolution”

Este error indica que Laravel no puede encontrar el host MySQL definido en el archivo .env.

✅ Solución:
  • Abre el archivo .env y asegúrate de que DB_HOST sea igual a mysql (no localhost).
  • Guarda los cambios y reinicia Sail:
    ./vendor/bin/sail down && ./vendor/bin/sail up -d
⚠️ Error 3: “Access denied for user”

Ocurre si las credenciales de conexión a MySQL no coinciden con las configuradas en el archivo .env.

✅ Solución:
  • Verifica que los valores de DB_DATABASE, DB_USERNAME y DB_PASSWORD sean correctos.
  • Si cambiaste las credenciales, recuerda reiniciar Sail.

🟢 Una vez que MySQL esté corriendo correctamente dentro de Docker, podrás continuar con el siguiente paso: Configurar la conexión en el archivo .env.

🗄️ Paso 11.3: Crear la Base de Datos del Proyecto

      Ahora que tenemos el servicio MySQL funcionando y Laravel configurado para conectarse, debemos crear la base de datos que nuestro proyecto utilizará. Esta base de datos almacenará todas las tablas y datos del sistema, como usuarios, productos, pedidos y demás información relevante.

1️⃣ Acceder al contenedor MySQL

Para crear la base de datos, primero accedemos al contenedor de MySQL dentro de Docker. Ejecuta:

./vendor/bin/sail mysql -u sail -p

Te pedirá la contraseña del usuario sail, que normalmente es password, salvo que la hayas cambiado en tu .env.

2️⃣ Crear la base de datos

Una vez dentro del cliente MySQL, ejecuta el siguiente comando para crear la base de datos que Laravel utilizará:

CREATE DATABASE laravel CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

🔹 laravel es el nombre de la base de datos, que debe coincidir con la variable DB_DATABASE en tu archivo .env. 🔹 El uso de utf8mb4 asegura compatibilidad con todos los caracteres, incluidos emojis.

3️⃣ Verificar que la base de datos se creó correctamente

Para confirmar que la base de datos existe, ejecuta:

SHOW DATABASES;

Deberías ver laravel listado entre las bases de datos disponibles.

4️⃣ Salir del cliente MySQL

Para salir del cliente MySQL, escribe:

exit;

5️⃣ Consejos y buenas prácticas

  • Usa nombres de bases de datos claros y relacionados con tu proyecto.
  • Mantén las credenciales de acceso en el archivo .env y nunca las subas a repositorios públicos.
  • Si trabajas con múltiples entornos (local, producción), crea bases de datos separadas para evitar conflictos.

🟢 Con esto, la base de datos laravel ya está lista y Laravel podrá utilizarla para almacenar información mediante migraciones, modelos y controladores.

Publicar un comentario

0 Comentarios