Vinnaren i pepparkakshustävlingen!
2009-10-05, 13:42
  #1
Medlem
Hej,

Jag har några frågor gällande hur man på bästa sätt håller data intakt vid uppdateringar av en MySQL databas.

Scenario:

Strukturen just nu ser ut så här: en utvecklingsdatabas, en testdatabas (unit-tests) och en release-databas.

Anta att en pre-release släpps till en kund och denne vill börja använda vissa moduler av systemet samt lägga in data i release-databasen via gränssnittet i applikationen. Vid nästa release har det dock gjorts ändringar i utvecklardatabasen, anta att en utvecklare exempelvis brutit ut en kolumn till ett nytt table eller lagt till nya relationer mellan två, eller flera, tables. Hur ska man i detta läge göra för att uppdatera strukturen i release-databasen utan att förlora den data som kunden har lagt in?

Finns det några verktyg som sköter sådant automatiskt? Eller måste man sköta den här typen av problematik manuellt?

/int0x80
Citera
2009-10-05, 14:03
  #2
Moderator
Protons avatar
Första tanken jag hade var ju att köra mysqldump, men eftersom strukturen har förändrats så att saker å ting inte ligger där de ursprungligen gjorde verkar den lösningen inget vidare gångbar.

Det man kanske kunde chansa på i detta fall är ju att få ut en CSV-fil där man har rätt struktur när man sedan ska läsa tillbaka datat igen.

Kod:
SELECT INTO OUTFILE
är väl det man har att välja på i mysql.

Krävs ju dock en del manuelt SQL-meckande för att få det att funka okej...
Citera
2009-10-05, 14:12
  #3
Medlem
Citat:
Ursprungligen postat av Proton
Första tanken jag hade var ju att köra mysqldump, men eftersom strukturen har förändrats så att saker å ting inte ligger där de ursprungligen gjorde verkar den lösningen inget vidare gångbar.

Det man kanske kunde chansa på i detta fall är ju att få ut en CSV-fil där man har rätt struktur när man sedan ska läsa tillbaka datat igen.

Kod:
SELECT INTO OUTFILE
är väl det man har att välja på i mysql.

Krävs ju dock en del manuelt SQL-meckande för att få det att funka okej...

Tack för svaret, har funderat i liknande banor, men hoppades på att slippa det ifall det finns verktyg som kan sköta uppgiften automatiskt.
Citera
2009-10-05, 19:36
  #4
Medlem
junks avatar
Nu är jag verkligen inte bra på MySQL men vill minnas att man kan länka columner och table eller?
Citera
2009-10-05, 22:18
  #5
Moderator
Protons avatar
Citat:
Ursprungligen postat av junk
Nu är jag verkligen inte bra på MySQL men vill minnas att man kan länka columner och table eller?

Va? Det där fattade jag inget av, kan du förklara hur du menar?
Citera
2009-10-18, 12:15
  #6
Medlem
En lösning

Tänkte att jag kunde meddela att jag efter mycket sökande hittat ett verktyg som kan hjälpa med detta, då det säkert kan vara fler som undrar över detta!

http://www.liquibase.org/

Kortfattat så är poängen att spara changesets av databasen i en xml-fil som är under versionshantering. Programmet implementerar sedan changeseten och känner av förändringar samt försöker lösa dem.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback