Verfying un database è come ci si aspetta che sia

voti
1

Ho scritto un'applicazione Java sulla mia macchina e funziona perfettamente con il DB ho creato, ma quando lo installo sul posto si fa saltare in aria perché il DB è leggermente diverso.

Quindi sono in procinto di scrivere del codice per verificare che:

  • A: Ho i dettagli DB correggere

  • B: Il database ha tutte le tabelle che mi aspetto e hanno le colonne di destra.

Ho un giù, ma ho idea di dove cominciare con B, qualche suggerimento?

Obiettivo DB è per il client corrente è Oracle, ma l'applicazione può essere configurato per funzionare su SQL Server come bene. Quindi una soluzione generica sarebbe apprezzato, ma non è nessisary come sono sicuro che riesco a capire come fare l'uno dall'altro.

È pubblicato 30/01/2009 alle 11:33
dall'utente
In altre lingue...                            


9 risposte

voti
4

Avrai voglia di interrogare l'information_schema del database, ecco alcuni esempi per Oracle, tutte le piattaforme sono consapevole ha qualcosa di simile.

http://www.alberton.info/oracle_meta_info.html

Risposto il 30/01/2009 a 11:38
fonte dall'utente

voti
1

Potreste essere in grado di utilizzare uno strumento di migrazione di database come LiquiBase per questo - la maggior parte di questi strumenti hanno un qualche modo di controllare il database. Non ho esperienza di prima mano di usarlo in modo che sia una supposizione.

Risposto il 30/01/2009 a 11:38
fonte dall'utente

voti
0

La maggior parte soluzione generica potrebbe essere quella di eseguire le query con la clausola di selezione aventi le coulmns attesi e dalla clausola di avere i nomi di tabella, nel blocco try catch. Si può mettere clausola WHERE come 1 = 2 in modo da non andare a prendere i dati. Se la query eseguita senza gettare eccezioni allora avete il tavolo e le colonne previsto.

Risposto il 30/01/2009 a 11:39
fonte dall'utente

voti
1

Io uso DBUnit per testare i database. Si tratta di una soluzione basata su Java, che si integra bene con JUnit . E 'possibile utilizzarlo con quasi nessun Java. I havent usato esattamente la stessa situazione che hai descritto, ma dovrebbe essere abbastanza vicino al lavoro.

Risposto il 30/01/2009 a 11:40
fonte dall'utente

voti
0

Il pezzo leggermente diverso potrebbe essere meglio gestita da script la creazione del database, in primo luogo. Un processo automatizzato ti dà una migliore possibilità di fare due identici.

Un altro la pena di fare il punto è che a ridurre al minimo il rischio, rendendo gli ambienti Accoglio e prod identiche - stesso schema del database e fornitore per entrambi. Modificare le circostanze che rendono i due diversi.

Infine, non si dice che cosa è "leggermente" diverso, ma a volte questi sono inevitabili (ad esempio Oracle utilizza sequenze, SQL Server utilizza le identità). Forse Hibernate può aiutare a passare da fornitori in modo più affidabile. Si astrae i dettagli in modo tale che i database che cambiano può significare la modifica di un singolo valore in un file di configurazione.

Risposto il 30/01/2009 a 11:48
fonte dall'utente

voti
0

Quello che dovete avere è fondamentalmente unit test per il database. "Una colonna deve esistere chiamato FOOBAR, il tipo deve essere un numero intero. Non possono esistere chiavi esterne, ecc"

Questo è fattibile con JUnit pianura e JDBC (chiedere al tavolo per la sua meta-dati), come si può decidere di garantire che si è assolutamente certi che cosa si sta facendo, che può essere più difficile quando si usano ad esempio DBUnit.

Risposto il 30/01/2009 a 11:53
fonte dall'utente

voti
0

È possibile verificare la presenza di tabelle, colonne, viste, ecc utilizzando queste tabelle in Oracle

USER_TABLES USER_VIEWS USER_PROCEDURE

(O per tutto) USER_OBJECTS DOVE OBJECT_TYPE = '??'

Per continuare ... USER_TAB_COLS per le colonne della tabella

Saluti K

Risposto il 30/01/2009 a 12:20
fonte dall'utente

voti
0

Se si sta utilizzando JDBC pianura, si dovrebbe provare utilizzando questo metodo: DatabaseMetadata.getTables e altri metodi simili disponibili nella classe di metadati.

Risposto il 30/01/2009 a 12:31
fonte dall'utente

voti
0

Io uso migratedb per questo. Esso consente di creare query che fanno cose come verificare l'esistenza di tabelle dati, colonne, righe, indici, ecc per un determinato database e usare quelli come "test". Se un test fallisce, si attiva un "azione" (che è solo un altro query che sa come risolvere il problema.)

Migratedb supporta piattaforme di database multipli (è possibile specificare il "verificare la presenza di interrogazione tavolo esistenza" per ogni piattaforma, ad esempio), completamente test configurabili (si può fare il vostro proprio su), viene fornito con test abbastanza completo di Oracle, e può essere eseguito in " controllare solo la modalità" in modo che si dice solo quali siano le differenze.

E 'una bella soluzione, robusta.

Risposto il 30/01/2009 a 14:46
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more