Mysql
 sql >> Base de données >  >> RDS >> Mysql

Schéma mysqldump uniquement, mise à jour du schéma sans suppression

Comment MySQL saurait-il ce qu'il faut mettre à jour ? Il ne peut pas savoir dans quel état sera la base de données de quelqu'un d'autre, il ne peut donc pas savoir quelles mises à jour appliquer. De plus, les mises à jour nécessitent souvent plus qu'une simple modification du schéma; ils peuvent nécessiter des modifications des données qui existent déjà ou peuvent nécessiter le déplacement de données de l'ancien schéma vers le nouveau. Vous n'obtiendrez jamais quelque chose qui détectera automatiquement tout cela.

La bonne solution est d'écrire des migrations. Chaque fois que vous modifiez la base de données, au lieu de simplement modifier vous-même le schéma de votre copie de développement, vous écrivez un script pour mettre à jour le schéma précédent vers le nouveau (et généralement un script pour revenir au schéma précédent, vous pouvez donc faire que si vous devez annuler une mise à jour). Ce script fait tout ce dont vous avez besoin pour modifier le schéma, déplacer des données, etc.

La plupart des frameworks Web modernes, comme Ruby on Rails , prennent en charge les migrations pour faciliter le suivi des migrations que vous avez déjà exécutées. Si vous n'utilisez pas un framework qui prend en charge les migrations, il ne serait pas trop difficile d'écrire vos propres scripts pour appliquer les migrations. Numérotez simplement chaque migration, ou mettez-y une date, et conservez une table dans votre base de données stockant uniquement la version actuelle du schéma sur lequel vous vous trouvez. Lorsque vous exécutez votre script de migration, s'il existe des migrations plus récentes que cette version actuelle, appliquez ces scripts dans l'ordre, puis mettez à jour le numéro dans la base de données indiquant la version sur laquelle vous vous trouvez.