Cómo Hacer una Migración en Supabase

Tutorial detallado para crear y gestionar migraciones de esquema de base de datos utilizando la CLI de Supabase, incluyendo la configuración inicial, vinculación con proyectos remotos, y aplicación de cambios.

6 min de lectura
Por Equipo 10xDev

¡vamos a crear tu primera migración de Supabase usando la CLI para definir tus tablas! Este es el flujo de trabajo recomendado para gestionar cambios en el esquema de tu base de datos de forma controlada y versionada.

Aquí tienes los pasos detallados:

Pre-requisitos:#

1 Tener Supabase CLI instalado: Si aún no lo tienes, instálalo siguiendo las instrucciones oficiales para tu sistema operativo: https://supabase.com/docs/guides/cli/getting-started (Las opciones comunes son Homebrew para macOS/Linux, Scoop para Windows, o npm). 2 Tener un proyecto Supabase creado: Necesitas un proyecto activo en supabase.com. 3 Docker Desktop (Recomendado): Para probar las migraciones localmente antes de aplicarlas a tu proyecto real, necesitarás Docker funcionando.

Pasos para crear tu primera migración:#

1 Inicia sesión en la CLI de Supabase (si no lo has hecho): Abre tu terminal y ejecuta:

Esto te pedirá que generes un token de acceso en la web de Supabase y lo pegues en la terminal.

2 Navega a la carpeta de tu proyecto local: Ve al directorio raíz donde quieres manejar tu configuración de Supabase.

3 Inicializa Supabase en tu proyecto local (si es la primera vez): Si no tienes una carpeta supabase en tu proyecto, ejecútalo. Si ya la tienes, puedes omitir este paso.

Esto creará una carpeta supabase con archivos de configuración.

4 Vincula tu proyecto local con tu proyecto remoto en Supabase: Necesitas el Project Ref (Referencia del Proyecto) de tu proyecto en Supabase. Lo encuentras en la configuración general de tu proyecto en el dashboard de Supabase (https://app.supabase.com/project/<tu-project-ref>/settings/general). Ejecuta el siguiente comando reemplazando <tu-project-ref>:

Te pedirá la contraseña de tu base de datos (la que estableciste al crear el proyecto).

5 Crea un nuevo archivo de migración: Ahora vas a generar el archivo SQL donde definirás tus tablas. Dale un nombre descriptivo. Por ejemplo, si vas a crear las tablas iniciales:

  • Esto creará un nuevo archivo SQL dentro de la carpeta supabase/migrations. El nombre del archivo tendrá un prefijo de timestamp para asegurar el orden de ejecución, algo como: supabase/migrations/YYYYMMDDHHMMSS_crear_tablas_iniciales.sql.

6 Edita el archivo de migración SQL:

  • Abre el archivo SQL que se acaba de crear (ej: supabase/migrations/YYYYMMDDHHMMSS_crear_tablas_iniciales.sql) con tu editor de código preferido.
  • Escribe el código SQL para crear tus tablas. Aquí tienes un ejemplo simple para crear dos tablas, profiles y posts, con una relación:
  • Importante: Asegúrate de que tu SQL sea válido para PostgreSQL. Incluye CREATE TABLE, define columnas, tipos de datos, claves primarias (PRIMARY KEY), claves foráneas (REFERENCES), restricciones (NOT NULL, UNIQUE, DEFAULT), etc. Es muy recomendable habilitar Row Level Security (RLS) y definir políticas básicas desde el principio.

7 (Opcional pero Muy Recomendado) Prueba la migración localmente:

  • Asegúrate de que Docker Desktop esté corriendo.
  • Inicia el entorno local de Supabase: Esto descargará imágenes de Docker y levantará una instancia local de Supabase (base de datos, API, etc.).
  • Aplica las migraciones pendientes a tu base de datos local: Verifica si hay errores en la terminal. Si todo va bien, tu base de datos local ahora tendrá las tablas definidas en la migración.
  • Puedes conectarte a la base de datos local usando los datos que muestra supabase start para verificar las tablas manualmente.
  • Cuando termines de probar localmente, puedes detener el entorno:

8 Aplica la migración a tu proyecto Supabase remoto (producción/staging): Una vez que estés seguro de que tu archivo SQL es correcto (idealmente después de probar localmente), aplica la migración a tu base de datos Supabase vinculada:

  • Este comando revisará los archivos en tu carpeta supabase/migrations que aún no se han aplicado a la base de datos remota y los ejecutará en orden.
  • ¡Cuidado! Este comando modifica directamente tu base de datos remota. Asegúrate de que la migración hace lo que esperas.

¡Listo! Después de ejecutar supabase db push, tus tablas deberían estar creadas en tu proyecto Supabase real. Puedes verificarlo en el "Table Editor" del dashboard de Supabase.

Consejos Adicionales:#

  • Control de Versiones (Git): Guarda tu carpeta supabase (especialmente supabase/migrations) en tu repositorio Git. Esto te permite rastrear cambios, colaborar con otros y revertir si es necesario.
  • Orden de Migraciones: La CLI ejecuta las migraciones en orden alfabético/cronológico basado en el timestamp del nombre del archivo.
  • Deshacer Migraciones (Localmente): Para desarrollo local, si quieres deshacer la última migración aplicada, puedes usar supabase migration down. Para reiniciar completamente la base de datos local al estado inicial (perdiendo todos los datos locales), usa supabase db reset.
  • Estado de las Migraciones: Puedes ver qué migraciones se han aplicado local y remotamente con supabase status.

Este proceso puede parecer un poco más complejo al principio que usar el editor de tablas en la interfaz web, pero te da un control mucho mayor, reproducibilidad y es esencial para trabajar en equipo o gestionar entornos de desarrollo, staging y producción.