2011-11-23 79 views
2

我在H2數據源配置如下行:H2 DB的runScript錯誤

<bean id="dataSource" 
    class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="org.h2.Driver" /> 
    <property name="url" value="jdbc:h2:mem:test_db;INIT=CREATE SCHEMA IF NOT EXISTS test_db;\\;RUNSCRIPT FROM '~/sql/populate.sql'\\;DB_CLOSE_DELAY=-1" /> 
</bean> 

當我運行它,我得到以下錯誤:

SQL state [90046];error code [90046]; URL format error; must be "jdbc:h2:{ {.|mem:}[name] | [file:]fileName | {tcp|ssl}:[//]server[:port][,server2[:port]]/name }[;key=value...]" 
but is "jdbc:h2:mem:test_db" [90046-160]; nested exception is org.h2.jdbc 
.JdbcSQLException: URL format error; must be "jdbc:h2:{ {.|mem:}[name] | [file:] 
fileName | {tcp|ssl}:[//]server[:port][,server2[:port]]/name }[;key=value...]" b 
ut is "jdbc:h2:mem:test_db" [90046-160] 

我不明白,有人可以在這裏看到錯誤嗎?

回答

4

嘗試:

<property name="url" value="jdbc:h2:mem:test_db;INIT=CREATE SCHEMA IF NOT EXISTS test_db\;RUNSCRIPT FROM '~/sql/populate.sql';DB_CLOSE_DELAY=-1" /> 
+0

沒有幫助。仍然是同樣的錯誤。 – stdcall

+0

對不起,只有一個反斜槓...我更新了我的答案。 –

3

您可能正在破壞; key = value模式。你必須逃避分號。 「test_db」後面的分號不會被轉義。試着離開它。

jdbc:h2:mem:test_db;INIT=CREATE SCHEMA IF NOT EXISTS test_db\;RUNSCRIPT FROM '~/sql/populate.sql';DB_CLOSE_DELAY=-1 
+0

沒有幫助。仍然是同樣的錯誤。 – stdcall

+0

只有一個反斜槓(我犯了同樣的錯誤)。不知道如何避免這個「逃跑的地獄」... –