JillionDB

Documentación

Niveles de riesgo

Cada cambio recibe uno de tres niveles y un motivo. El nivel habla de lo que puede pasarles a los datos que ya están en tu base de datos.

Seguro

No toca nada existente. Añadir una tabla o una columna vacía es seguro.

Precaución

Funciona, pero puede fallar con los datos existentes, bloquear un rato una tabla con mucho uso o romper código que usa nombres antiguos.

Destructivo

Puede borrar o recortar datos que ya existen. Léelos dos veces.

Todo lo que comprueba JillionDB

Estos son exactamente los motivos que verás en una revisión.

Seguro
Añadir una tabla
Tabla nueva; no toca nada existente.
Seguro
Añadir una columna opcional
Añade una columna vacía; las filas existentes no cambian.
Seguro
Alargar un tipo o añadir opciones
Permite valores más largos u opciones nuevas; los datos existentes no cambian.
Seguro
Hacer opcional una columna
Permite valores vacíos; nada existente cambia.
Seguro
Cambiar un valor por defecto
Solo afecta a las filas nuevas.
Seguro
Cambiar un comentario
Solo documentación.
Seguro
Una relación eliminada junto con su tabla
Se elimina junto con su tabla.
Seguro
Renombrar índices y claves con nombre generado
Mantiene los nombres generados al día con los nombres nuevos.
Precaución
Renombrar una tabla o columna
El código que usa el nombre anterior deja de funcionar hasta que se actualice.
Precaución
Añadir una columna obligatoria sin valor por defecto
Falla si la tabla ya tiene filas, porque no tienen valor para ella.
Precaución
Añadir una columna que rellena cada fila
Rellena cada fila existente, lo que reescribe la tabla y la bloquea mientras dura.
Precaución
Cambiar a un tipo más grande
Reescribe la tabla al tipo más grande y la bloquea mientras dura.
Precaución
Cambiar entre horas con y sin zona horaria
Las horas existentes se convierten con la zona horaria del servidor.
Precaución
Cambiar un tipo propio de la base de datos
Cambia el tipo propio de la base de datos; comprueba que los valores existentes se convierten.
Precaución
Hacer obligatoria una columna
Falla si alguna fila existente está vacía.
Precaución
Cambiar cómo se generan los nuevos id
Cambia cómo se generan los id nuevos; pueden coincidir con los existentes.
Precaución
Añadir una regla sin duplicados
Falla si las filas existentes ya tienen duplicados.
Precaución
Quitar una regla sin duplicados
Pasan a ser posibles los duplicados.
Precaución
Cambiar la clave primaria
Falla si hay duplicados, y puede que haya que actualizar las relaciones con esta tabla.
Precaución
Añadir un índice
Bloquea las escrituras en la tabla mientras se crea el índice en tablas grandes.
Precaución
Quitar un índice
Las consultas que dependían de él pueden ir más lentas.
Precaución
Añadir una relación
Revisa cada fila existente y falla si alguna no coincide.
Precaución
Quitar una relación
La base de datos deja de comprobar estos valores.
Precaución
Añadir una regla de comprobación
Falla si alguna fila existente incumple la regla.
Precaución
Quitar una regla de comprobación
La base de datos deja de aplicar esta regla.
Precaución
Cambiar opciones de la tabla
Puede reconstruir la tabla.
Precaución
Cambios que SQLite solo puede hacer reconstruyendo la tabla
SQLite copia la tabla en una nueva para hacer estos cambios.
Destructivo
Eliminar una tabla
Elimina la tabla y todas sus filas.
Destructivo
Eliminar una columna
Elimina la columna y sus datos.
Destructivo
Acortar o reducir un tipo
Los valores que no quepan se recortan o hacen fallar el cambio.
Destructivo
Quitar opciones de una lista
Las filas que usan … hacen fallar el cambio.
Destructivo
Cambiar a otro tipo distinto
Convertir los valores existentes puede fallar o perder datos.

Notas sobre la migración completa

Precaución
Migraciones de MySQL con varios pasos
MySQL no puede deshacer cambios de esquema a medias: si un paso falla, los anteriores siguen aplicados.
Precaución
Revertir un cambio destructivo
Al revertir se recrean las tablas y columnas eliminadas, pero no sus datos.