2012-11-28 6 views
17

Ho iniziato a utilizzare Flyway nel mio progetto corrente per migrazioni di database e mi piace molto. Attualmente utilizzo Oracle in PROD- e Derby in TEST-Environment.Il modo migliore per gli script sql "database specifici" con Flyway

Molto presto, ho eseguito il problema dei comandi sql specifici del database, ad es.

  • ALTER TABLE T1 MODIFY F1 VARCHAR(256); su Oracle vs
  • ALTER TABLE T1 ALTER F1 SET DATA TYPE VARCHAR(256); su Derby.

Non riesco a vedere un modo per scrivere una tabella di modifica della tabella di modifica "neutro del fornitore" sql.

Qual è il modo migliore per gestire questo problema utilizzando Flyway?

risposta

25

È possibile utilizzare la proprietà flyway.locations.

In prova sarebbe simile a questa:

flyway.locations=sql/common,sql/derby 

e prod:

flyway.locations=sql/common,sql/oracle 

Si potrebbe quindi avere le dichiarazioni comuni (V1__Create_table.sql) nelle copie comuni e diverse del DB -esposizioni specifiche (V2__Alter_table.sql) nelle posizioni specifiche di db.

Una soluzione ancora migliore, a mio parere, è avere lo stesso DB in prod e test. Sì, si perde un po 'di prestazioni, ma d'altra parte si elimina anche un'altra differenza (e potenziale fonte di errori) tra gli ambienti.

+0

Grazie Axel per la risposta veloce! – Peti

+0

Probabilmente vale la pena di mettere da qualche parte nelle [FAQ flyway] (http://flywaydb.org/documentation/faq.html)? – Peti

+4

Fatto: http://flywaydb.org/documentation/faq.html#db-specific-sql –

0

Le differenze di SQL tra Oracle e alcuni di questi database desktop sono minori. È possibile che uno sviluppatore inserisca un codice personalizzato per eseguire una leggera rimozione dinamica dell'SQL in fase di esecuzione in base all'ambiente (ad esempio, rimuovere la designazione del tablespace)?

Preferisco questo approccio per fare affidamento su ogni sviluppatore per mantenere manualmente due insiemi di SQL sincronizzati.

+0

Questa domanda dovrebbe essere fatta separatamente. È un'idea interessante – Peti

+0

buona idea Pei - domanda creata: http://stackoverflow.com/questions/32121083/customizing-sql-executed-per-environment – dropofahat

+0

Cool ... Axel Fontaine ha già risposto :-) – Peti

Problemi correlati