2011-11-23 78 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

只有一个反斜杠(我犯了同样的错误)。不知道如何避免这个“逃跑的地狱”... –