Resuelve problemas de compatibilidad entre versiones de PostgreSQL
al exportar e importar backups.
Cambios en export-database.post.ts:
- Agregar flags adicionales a pg_dump para mayor portabilidad:
--no-tablespaces: evita referencias a tablespaces
--no-security-labels: evita security labels
--no-synchronized-snapshots: evita snapshots sincronizados
- Esto genera SQL más compatible entre diferentes instalaciones
Cambios en import-database.post.ts:
- Limpiar SQL antes de importar, removiendo comandos incompatibles:
* SET transaction_timeout (no existe en todas las versiones)
* SET idle_in_transaction_session_timeout
* SET lock_timeout
* \unrestrict (comando no reconocido)
- Agregar -q y -v ON_ERROR_STOP=1 a psql
- Mejorar detección de errores: solo fallar en ERROR/FATAL reales
- Reportar tamaño original y limpio del archivo
Con estos cambios, los backups exportados desde cualquier versión
de PostgreSQL se pueden importar correctamente sin errores de
compatibilidad.
El problema anterior era que pg_dump genera archivos SQL con
comandos de psql (\connect, \set, etc.) que no son SQL válido
para ejecutar con el driver de Node.js.
Cambios:
- Guardar el archivo .sql temporalmente en /tmp
- Ejecutar psql -f archivo.sql para importar
- Limpiar el archivo temporal después
- Manejar mensajes de psql correctamente (stderr != error)
- Agregar validación para psql no disponible
Ahora la importación funciona correctamente con archivos
generados por pg_dump.
Implementa la capacidad de restaurar la base de datos desde
un archivo SQL de backup exportado previamente.
Cambios:
Backend:
- Nuevo endpoint POST /api/debug/import-database.post.ts
- Recibe archivo .sql via multipart/form-data
- Ejecuta el SQL del backup (que incluye DROP y CREATE)
- Reemplaza completamente la base de datos existente
Frontend:
- Nuevo botón verde "📥 IMPORTAR BACKUP"
- Input file oculto con accept=".sql"
- Validación de extensión de archivo
- Confirmación con advertencia clara
- Estado de carga durante importación
Flujo de uso:
1. Usuario hace click en "📥 IMPORTAR BACKUP"
2. Selecciona archivo .sql previamente exportado
3. Confirma que desea reemplazar toda la BD
4. Sistema ejecuta el SQL completo
5. Muestra mensaje de éxito/error
6. Usuario recarga la página
Esto completa el ciclo backup/restore permitiendo
recuperación completa del estado de la base de datos.