2013-07-08 10 views
8

Mam skrypt SQL (to tylko definicja schematu). Skrypt jest zmodyfikowaną wersją (pozbycie się złych znaków h2 nie lubi) mysql głupiego.H2 Polecenie "runscript" zamienia wszystkie nazwy tabel na wielkie litery.

Skrypt działa, a schemat jest wstawiany do bazy danych h2, ale problem polega na tym, że wszystkie nazwy baz danych są pisane wielkimi literami ("xyz" jest konwertowane na "XYZ").

Potrzebuję ich pozostać małymi literami, ponieważ moja aplikacja szuka małej litery (a wszystkie tabele w mysql db są małe).

Dlaczego tak się dzieje? Jak mogę powiedzieć h2, aby tego nie robić? Czy istnieje lepszy sposób wstawienia definicji schematu do h2?

To polecenie INT biegnę:

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

EDIT: Właśnie próbowałem na konsoli h2, to samo. Nie jest to więc problem z INIT-em, lecz z poleceniem "RUNSCRIPT".

Tried to

RUNSCRIPT FROM '~/schema.sql' 

Odpowiedz

16

Znaleziony problem. Domyślnie h2 ma to ustawienie ustawione na true DATABASE_TO_UPPER. Ustawienie wartości false spowoduje zapisanie danych zgodnie z oczekiwaniami. Więc w moim poleceniem init (przed nim), wszedłem:

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

Teraz tabele są wstawione w odpowiednim przypadku

6

Inną opcją jest owinąć nazwy tabeli/kolumny w cudzysłowach, aby zachować obudowę.

E.g. create table "products" zamiast create table products

Powiązane problemy