Docs
Niveaux de risque
Chaque changement reçoit l’un de trois niveaux et une raison. Le niveau dit ce qui peut arriver aux données déjà présentes dans votre base.
Sûr
Rien d’existant n’est touché. Ajouter une table ou une colonne vide est sûr.
Prudence
Fonctionne, mais peut échouer sur les données existantes, bloquer un moment une table très utilisée ou casser du code qui utilise les anciens noms.
Destructif
Peut effacer ou couper des données déjà présentes. À relire deux fois.
Tout ce que vérifie JillionDB
Ce sont exactement les raisons que vous verrez lors d’un examen.
Sûr
Ajouter une table
Nouvelle table ; rien d’existant n’est touché.
Sûr
Ajouter une colonne facultative
Ajoute une colonne vide ; les lignes existantes ne changent pas.
Sûr
Allonger un type ou ajouter des options
Autorise des valeurs plus longues ou de nouvelles options ; les données existantes ne changent pas.
Sûr
Rendre une colonne facultative
Autorise les valeurs vides ; rien d’existant ne change.
Sûr
Changer une valeur par défaut
Ne concerne que les nouvelles lignes.
Sûr
Changer un commentaire
Documentation uniquement.
Sûr
Une relation supprimée avec sa table
Supprimé avec sa table.
Sûr
Renommer les index et clés aux noms générés
Garde les noms générés en phase avec les nouveaux noms.
Prudence
Renommer une table ou une colonne
Le code qui utilise l’ancien nom ne fonctionne plus tant qu’il n’est pas mis à jour.
Prudence
Ajouter une colonne obligatoire sans valeur par défaut
Échoue si la table contient déjà des lignes, faute de valeur pour celles-ci.
Prudence
Ajouter une colonne qui remplit chaque ligne
Remplit chaque ligne existante, ce qui réécrit la table et la verrouille pendant l’opération.
Prudence
Passer à un type plus grand
Réécrit la table vers le type plus grand et la verrouille pendant l’opération.
Prudence
Passer d’heures avec fuseau à sans fuseau, ou l’inverse
Les heures existantes sont converties avec le fuseau horaire du serveur.
Prudence
Changer un type propre à la base
Modifie le type propre à la base de données ; vérifiez que les valeurs existantes se convertissent.
Prudence
Rendre une colonne obligatoire
Échoue si une ligne existante est vide.
Prudence
Changer la façon dont les nouveaux id sont créés
Change la façon dont les nouveaux identifiants sont créés ; ils peuvent entrer en conflit avec les existants.
Prudence
Ajouter une règle sans doublons
Échoue si des lignes existantes ont déjà des doublons.
Prudence
Retirer une règle sans doublons
Les doublons deviennent possibles.
Prudence
Changer la clé primaire
Échoue en cas de doublons, et les liens vers cette table peuvent devoir être mis à jour.
Prudence
Ajouter un index
Bloque les écritures sur la table pendant la création de l’index sur les grandes tables.
Prudence
Retirer un index
Les requêtes qui s’y appuyaient peuvent ralentir.
Prudence
Ajouter une relation
Vérifie chaque ligne existante et échoue si l’une ne correspond pas.
Prudence
Retirer une relation
La base de données ne vérifie plus ces valeurs.
Prudence
Ajouter une règle de contrôle
Échoue si une ligne existante enfreint la règle.
Prudence
Retirer une règle de contrôle
La base de données n’applique plus cette règle.
Prudence
Changer les options de la table
Peut reconstruire la table.
Prudence
Changements que SQLite ne fait qu’en reconstruisant la table
SQLite copie la table dans une nouvelle pour effectuer ces modifications.
Destructif
Supprimer une table
Supprime la table et toutes ses lignes.
Destructif
Supprimer une colonne
Supprime la colonne et ses données.
Destructif
Raccourcir ou réduire un type
Les valeurs trop grandes sont tronquées ou font échouer la modification.
Destructif
Retirer des options d’une liste
Les lignes qui utilisent … font échouer la modification.
Destructif
Passer à un autre genre de type
Convertir les valeurs existantes peut échouer ou perdre des données.
Notes sur la migration entière
Prudence
Migrations MySQL en plusieurs étapes
MySQL ne peut pas annuler un changement de schéma à mi-parcours : si une étape échoue, les précédentes restent appliquées.
Prudence
Annuler un changement destructif
L’annulation recrée les tables et colonnes supprimées, mais pas leurs données.