2013-07-08 12 views
8

Bir sql betiğim var (sadece şema tanımı). Komut, bir mysql dilsizinin değiştirilmiş bir versiyonudur (h2'nin kötü karakterlerinden kurtulmaktan hoşlanmaz).H2 "runscript" komutu tüm tablo adlarını büyük harfe dönüştürür

Komut dosyası çalışır ve şema h2 veritabanına eklenir, ancak sorun, tüm veritabanı adlarının büyük harfle yazılmasıdır ('xyz', 'XYZ' değerine dönüştürülür).

Uygulamamın küçük harfleri (ve mysql db'deki tüm tabloların küçük harfleri) aradığı için küçük harflerle kalmalarına ihtiyacım var.

Bu neden oluyor? Bunu yapmayan h2'ye nasıl söyleyebilirim? Şema tanımını h2'ye eklemek için daha iyi bir yol var mı?

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

DÜZENLEME: Sadece h2 konsolda bu çalıştı aynı şey

Bu koşuyorum INT komuttur. Yani bu bir INIT sorunu değil, 'RUNSCRIPT' komutuyla.

bu

RUNSCRIPT FROM '~/schema.sql' 

cevap

16

sorunu Bulunan çalıştı. Varsayılan olarak, h2 bu ayarı true olarak DATABASE_TO_UPPER olarak ayarlamıştır. Bunu false olarak ayarlamak verileri beklendiği gibi kaydeder. Benim INIT komutu (ondan önce) Yani, girilen:

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

Şimdi tabloları doğru durumda

6

Başka bir seçenek kılıfı korumak için çift tırnak tablo/sütun adları sarılmasıdır dahil edilmektedir.

E.g. create table products

yerine create table "products"
İlgili konular