Capítulo 6: Comparación y Sincronización de Esquemas
Información: Este capítulo explica cómo detectar diferencias estructurales entre dos bases de datos, visualizarlas en una matriz diferencial y aplicar salvaguardas de copia de seguridad y reversión.
En este capítulo:
- 6.1 Detección de diferencias de esquema
- 6.2 Matriz visual diferencial
- 6.3 Salvaguardas y mecanismos de seguridad
- Temas relacionados
6.1 Detección de diferencias de esquema
Con el tiempo, las bases de datos de desarrollo y producción inevitablemente se desalinean (Schema Drift). SQLOZ identifica con exactitud cualquier divergencia estructural para garantizar una sincronización fiable:
- Abra el menú superior Herramientas → Comparar esquemas….
- Origen (Source): La base de referencia (ej.
local_dev). - Destino (Target): La base que debe actualizarse (ej.
production_db). - Pulse Comparar.
6.2 Matriz visual diferencial
Las discrepancias se presentan en una matriz intuitiva con código de colores:
| Color | Significado | Operación generada |
|---|---|---|
| 🟢 Verde | Presente en origen, ausente en destino | CREATE TABLE / ADD COLUMN |
| 🟡 Amarillo | Presente en ambos pero con tipo o índice distinto | ALTER TABLE |
| 🔴 Rojo | Eliminado en origen pero aún existente en destino | DROP |
Ejemplo:
ORIGEN (local_dev) | DESTINO (prod_db) | ACCIÓN APLICABLE
payments | ❌ (ausente) | ➕ CREATE TABLE payments
users.phone_verified (BOOLEAN) | users.phone_verified (TINYINT) | 🔄 MODIFY COLUMN
6.3 Salvaguardas y mecanismos de seguridad
Al pulsar Aplicar sincronización, SQLOZ aplica reglas de protección estrictas:
- Copia de seguridad automática (
_sqloz_bak_...): Disponible para motores MySQL/MariaDB. Antes de procesar sentencias DDL destructivas (DROP TABLE,DROP COLUMN,MODIFY COLUMN), la tabla de destino se respalda en una tabla temporal con marca de tiempo:CREATE TABLE IF NOT EXISTS `_sqloz_bak_<timestamp>_users` AS SELECT * FROM `users`; - Script de reversión y restauración (MySQL/MariaDB): Habiendo completado la copia de respaldo, SQLOZ emite el archivo SQL para revertir los cambios de esquema junto con sentencias comentadas para reintegrar los datos:
-- INSERT IGNORE INTO `users` SELECT * FROM `_sqloz_bak_<timestamp>_users`; - Protección contra borrados destructivos: Todo comando que suponga la eliminación de tablas o columnas en el servidor de destino requiere la aprobación explícita del usuario.
Advertencia: En destinos PostgreSQL o SQLite no se generan tablas automáticas de respaldo. Realice siempre una copia de seguridad manual verificada antes de aplicar modificaciones estructurales en estos entornos.
