2013-07-08 15 views
8

Ho uno script sql (è solo la definizione dello schema). Lo script è una versione modificata (eliminando i brutti personaggi non piaciuti a h2) di un mysql stupido.Il comando H2 "runscript" trasforma tutti i nomi delle tabelle in maiuscolo

Lo script viene eseguito e lo schema viene inserito nel database h2, ma il problema è che tutti i nomi dei database sono in maiuscolo ('xyz' viene convertito in 'XYZ').

Ho bisogno che restino in lettere minuscole perché la mia applicazione sta cercando la minuscola (e tutte le tabelle nel mysql db sono in minuscolo).

Perché sta succedendo? Come posso dire a h2 di non farlo? C'è un modo migliore per inserire la definizione dello schema in h2?

Questo è il comando INT sto correndo:

jdbc:h2:mem:~/test;INIT=runscript from '~/schema.sql' 

EDIT: Appena provato questo sulla console h2, stessa cosa. Quindi questo non è un problema INIT, è con il comando 'RUNSCRIPT'.

provato questo

RUNSCRIPT FROM '~/schema.sql' 

risposta

16

trovato il problema. Per impostazione predefinita, h2 ha questa impostazione impostata su true DATABASE_TO_UPPER. L'impostazione su false salverà i dati come previsto. Così nel mio comando INIT (prima), sono entrato:

jdbc:h2:mem:~/test;DATABASE_TO_UPPER=false;INIT=runscript from '~/schema.sql' 

Ora le tabelle vengono inseriti nel caso corretto

6

Un'altra opzione è quella di avvolgere i nomi di tabella/colonna tra virgolette per preservare la carcassa.

E.g. create table "products" anziché create table products

Problemi correlati