Mejorar compatibilidad de backups SQL
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m5s
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m5s
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.
This commit is contained in:
@@ -55,9 +55,15 @@ export default defineEventHandler(async (event) => {
|
||||
const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, -5)
|
||||
const filename = `backup-seguidordelotes-${timestamp}.sql`
|
||||
|
||||
// Ejecutar pg_dump
|
||||
// Usar PGPASSWORD en la variable de entorno para evitar prompt de contraseña
|
||||
const command = `PGPASSWORD="${password}" pg_dump -h ${host} -p ${port} -U ${user} -d ${database} --clean --if-exists --no-owner --no-acl`
|
||||
// Ejecutar pg_dump con opciones para máxima compatibilidad
|
||||
// --clean: incluir DROP antes de CREATE
|
||||
// --if-exists: usar IF EXISTS en los DROP
|
||||
// --no-owner: no incluir comandos de ownership
|
||||
// --no-acl: no incluir permisos
|
||||
// --no-tablespaces: no incluir tablespaces
|
||||
// --no-security-labels: no incluir security labels
|
||||
// --no-synchronized-snapshots: no usar snapshots sincronizados
|
||||
const command = `PGPASSWORD="${password}" pg_dump -h ${host} -p ${port} -U ${user} -d ${database} --clean --if-exists --no-owner --no-acl --no-tablespaces --no-security-labels --no-synchronized-snapshots`
|
||||
|
||||
console.log(' - Ejecutando pg_dump...')
|
||||
const { stdout, stderr } = await execAsync(command, {
|
||||
|
||||
Reference in New Issue
Block a user