2014-06-25 4 views
8

ho creato un database H2 con il mio codice con questo URL:non può vedere il mio database di H2 in console Web

jdbc: h2: C: /data/fixed.db

mio il codice può creare tabelle, eseguire query. Se apro il file manualmente, posso vedere il suo contenuto e visualizzare le query create ecc.

Tuttavia, quando provo a utilizzare la console H2 con l'interfaccia web, non riesco a vedere il database. Invece, la console Web crea un altro database vuoto che si trova qui C:/data/fixed.db.mv.db. Non riesco proprio a caricare il mio database.

Cosa mi manca?

EDIT

Il mio codice usa H2 1.3.175
L'H2 console web 1.4.178

+0

Il nome del file richiede l'estensione '.db'? – MadProgrammer

+0

@MadProgrammer Anche senza l'estensione '.db' ho avuto lo stesso problema. – Stephan

risposta

6

Finalmente ho risolto il mio problema ...

Dal 1.4. x, H2 utilizza MV_STORE (vedi SO risposta here e commento di Thomas Mueller). Apparentemente, la console Web tenta di aggiungere automaticamente un'estensione .mv.db. Anche se esiste già un file con l'estensione h2.db.

Così, aggiorno la versione H2 del mio codice da 1.3.175 a 1.4.178 e, infine, posso vedere i miei dati ...

EDIT
Ecco una soluzione alternativa proposta da @devdanke :

È necessario indicare manualmente a H2 1.4.x di non utilizzare MV_Store: "; mv_store = false". Che seccatura.

Per esempio, si potrebbe finire con un codice simile a:

Class.forName("org.h2.Driver"); 
Connection conn = DriverManager.getConnection(// 
    "jdbc:h2:file:C:\\my\\java\\projects\\test;mv_store=false" // 
); 
+2

Molti strumenti di database di terze parti utilizzano H2 1.3.x perché è la versione stabile. Tuttavia, l'H2 1.4.x utilizza per impostazione predefinita il motore di archiviazione MV_Store "beta", "experimental", che H2 1.3.x non può leggere. A causa della sfortunata impostazione di H2, è necessario comunicare manualmente a H2 1.4.x di non utilizzare MV_Store: "; mv_store = false". Che seccatura. – devdanke

+2

@devdanke il tuo commento da solo ha risolto il mio problema, che era simile all'OP ma fino ad ora non ero in grado di risolverlo. Molte grazie! "; mv_store = false" fa il trucco! –

+0

Leggendo il mio commento qualche anno dopo, mi pento del tono. Sono stato infastidito dal default di H2 config. Ma, cosa più importante, sono grato a Thomas Müller, il suo eccellente H2 DB, e che ce lo offre gratuitamente. – devdanke

0

Non credo Db è richiesta in jdbc:h2:C:/data/fixed.db

ho usato questo due linee e ha funzionato bene per me

Class.forName("org.h2.Driver"); 
Connection conn = DriverManager.getConnection("jdbc:h2:file:G:\\projects\\test;MODE=MySQL;INIT=RUNSCRIPT FROM '~/test.sql'\\;"); 

Il mio codice appena creato un file in formato db b y il nome test.mv.db

Problemi correlati