H2 DB 运行脚本错误
Posted
技术标签:
【中文标题】H2 DB 运行脚本错误【英文标题】:H2 DB runscript error 【发布时间】:2011-11-23 05:37:32 【问题描述】:我在 H2 数据源配置中有以下行:
<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]
我不明白,有人可以在这里看到错误吗?
【问题讨论】:
【参考方案1】:试试:
<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" />
【讨论】:
【参考方案2】:您可能打破了 ;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
【讨论】:
只有一个反斜杠(我犯了同样的错误)。不知道如何避免这种“逃离地狱”......以上是关于H2 DB 运行脚本错误的主要内容,如果未能解决你的问题,请参考以下文章
在 PL/SQL 脚本上使用 DB 链接会引发“找不到表”错误
H2 DB Initial Set Up 脚本在 JUNIT 中被多次调用
Mybatis运行错误:信息: SQLErrorCodes loaded: [DB2, Derby, H2, HDB, HSQL, Informix, MS-SQL, MySQL, Oracle, P