sql >> Databasteknik >  >> RDS >> Mysql

Endast mysqldump-schema, schemauppdatering utan släpp

Hur skulle MySQL veta vad som ska uppdateras? Den kan inte veta i vilket tillstånd någon annans databas kommer att vara, så den kan inte veta vilka uppdateringar som ska tillämpas. Dessutom kräver uppdateringar ofta mer än att bara ändra schemat; de kan kräva ändringar av data som redan finns, eller kanske behöva data flyttas från det gamla schemat till det nya. Du kommer aldrig att få något som automatiskt upptäcker allt detta.

Den rätta lösningen är att skriva migrationer. Varje gång du ändrar databasen, istället för att bara ändra schemat för din utvecklingskopia själv, skriver du ett skript för att uppdatera från det tidigare schemat till det nya (och vanligtvis ett skript för att nedgradera tillbaka till det tidigare schemat, så att du kan göra att om du behöver återställa en uppdatering). Det skriptet gör allt du behöver för att ändra schemat, flytta runt data och liknande.

De flesta moderna webbramverk, som Ruby on Rails , har stöd för migrering för att göra det enklare att hålla reda på vilka migreringar du redan har kört. Om du inte använder ett ramverk som stöder migrering, skulle det inte vara för hårt att skriva dina egna skript för att tillämpa migrering. Numrera bara varje migrering, eller ange ett datum i den, och behåll en tabell i din databas som endast lagrar den aktuella versionen av schemat som du använder. När du kör ditt migreringsskript, om det finns några migreringar som är nyare än den aktuella versionen, tillämpa dessa skript i ordning och sedan uppdatera numret i databasen som säger vilken version du använder.




  1. Resurs-id #6-fel i PHP med MySQL

  2. Dubblettpost '0' för nyckel 'PRIMÄR'

  3. Kan inte visa data från QSqlQueryModel i en QML TableView

  4. Du vet att du vill:Migrera från Oracle till MariaDB