2013-07-08 86 views
8

我有一個sql腳本(它只是模式定義)。該腳本是一個修改後的版本(擺脫了不喜歡的壞字符h2)。H2「runscript」命令將所有表名轉換爲大寫

腳本運行並且架構被插入到h2數據庫中,但問題是所有數據庫名都是大寫的('xyz'被轉換爲'XYZ')。

我需要它們保持小寫,因爲我的應用程序正在尋找小寫字母(並且mysql db中的所有表都是小寫字母)。

這是怎麼發生的?我怎麼能告訴h2不這樣做?有沒有更好的方法將模式定義插入到h2中?

這是INT命令我運行:

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

編輯:只是嘗試這樣的H2控制檯上,同樣的事情。所以這不是一些INIT問題,它是用'RUNSCRIPT'命令。

試過這種

RUNSCRIPT FROM '~/schema.sql' 

回答

16

發現的問題。默認情況下,h2將此設置設爲真DATABASE_TO_UPPER。將其設置爲false將按預期保存數據。所以在我的INIT命令(前),我進入:

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

現在的表被插在正確的情況下

6

另一種選擇是換表/列名在雙引號保護外殼。

E.g. create table "products"而不是create table products