Guía de Migración a PostgreSQL
🎯 Objetivo
Migrar la aplicación de SQLite a PostgreSQL para mejor rendimiento y escalabilidad.
📋 Requisitos Previos
1. Instalar PostgreSQL en Windows
Opción A: Instalador Oficial
- Descarga PostgreSQL desde https://www.postgresql.org/download/windows/
- Ejecuta el instalador
- Configura la contraseña del usuario
postgres
- Instala en el puerto por defecto (5432)
Opción B: Usando Chocolatey
choco install postgresql
2. Crear la Base de Datos
# Conectar a PostgreSQL
psql -U postgres
# Crear la base de datos
CREATE DATABASE ani_assistant;
# Verificar que se creó
\l
# Salir
\q
🔧 Configuración
1. Actualizar Variables de Entorno
Edita tu archivo .env:
# Cambiar de SQLite a PostgreSQL
DATABASE_URL="postgresql://postgres:tu-password@localhost:5432/ani_assistant"
2. Verificar Configuración
npm run check-env
🚀 Proceso de Migración
Paso 1: Generar Migraciones
# Generar migración inicial
npm run db:migrate
Paso 2: Aplicar Migraciones
# Aplicar las migraciones a PostgreSQL
npm run db:push
Paso 3: Configurar Usuarios
# Crear usuarios de prueba
npm run db:setup
Paso 4: Cargar Datos (Opcional)
# Cargar datos de ejemplo
npm run db:seed
🔍 Verificación
1. Verificar Conexión
npm run check-env
2. Probar la Aplicación
npm run dev
3. Verificar en PostgreSQL
psql -U postgres -d ani_assistant
# Ver tablas
\dt
# Ver usuarios
SELECT name, lastname, username, email, role FROM "User";
# Salir
\q
🆘 Solución de Problemas
Error: "connection refused"
- Verificar que PostgreSQL esté ejecutándose
- Verificar el puerto (5432)
- Verificar credenciales en DATABASE_URL
Error: "database does not exist"
# Crear la base de datos
psql -U postgres
CREATE DATABASE ani_assistant;
\q
Error: "permission denied"
- Verificar que el usuario tenga permisos
- Verificar la contraseña en DATABASE_URL
Error: "relation does not exist"
# Regenerar el cliente de Prisma
npm run db:generate
# Aplicar migraciones
npm run db:push
📊 Diferencias con SQLite
Ventajas de PostgreSQL
- ✅ Mejor rendimiento con múltiples usuarios
- ✅ Transacciones ACID completas
- ✅ Mejor escalabilidad
- ✅ Más tipos de datos
- ✅ Mejor soporte para consultas complejas
Consideraciones
- ⚠️ Requiere instalación y configuración
- ⚠️ Más recursos del sistema
- ⚠️ Configuración de red para producción
🔄 Rollback (Si es necesario)
Si necesitas volver a SQLite:
Cambiar DATABASE_URL en .env:
DATABASE_URL="file:./dev.db"
Cambiar provider en prisma/schema.prisma:
datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
}
Regenerar y aplicar:
npm run db:generate
npm run db:push
npm run db:setup
📝 Notas Importantes
- Backup: Siempre haz backup de tus datos antes de migrar
- Testing: Prueba en un entorno de desarrollo primero
- Performance: PostgreSQL puede ser más lento en desarrollo local
- Storage: Las imágenes se guardan en
/uploads/photos_profile/
🎉 ¡Migración Completada!
Una vez completada la migración, tu aplicación estará usando PostgreSQL con todas las nuevas características:
- ✅ Usernames únicos generados automáticamente
- ✅ Separación de nombre y apellido
- ✅ Almacenamiento de imágenes en archivos
- ✅ Mejor rendimiento y escalabilidad