【发布时间】:2018-11-07 09:27:03
【问题描述】:
我正在尝试连接执行集成测试,为此我需要 H2 db 来重新创建一些视图。
我正在使用这些属性:
<bean id="internalXaDataSource" class="org.h2.jdbcx.JdbcDataSource">
<property name="URL" value="jdbc:h2:./target/testing/h2db/#{randomUUID1.toString()}/:testdb;MODE=MSSQLServer"/>
<property name="description" value="#{randomUUID1.toString()}jdbcXa"/>
<property name="user" value="sa"/>
<property name="password" value=""/>
</bean>
<bean id="h2Server" class="org.h2.tools.Server" factory-method="createTcpServer" init-method="start" destroy-method="stop">
<constructor-arg>
<array>
<value>-tcp</value>
<value>-tcpAllowOthers</value>
<value>-tcpPort</value>
<value>8043</value>
</array>
</constructor-arg>
</bean>
我尝试了几种不同的连接方式:
使用调试器获取生成的 URL
然后使用 jdbc 连接 URL 连接到它,例如:
jdbc:h2:./target/testing/h2db/#3434-sdfjsd9o3849-df34/:testdb;MODE=MSSQLServer
我有一个成功的连接,但数据库是空的,没有显示表。但是,使用信息模式获取数据库中的模式列表,表明testdb数据库在那里。
通过 tcp 服务器
我尝试了几个不同的 URL,但都没有连接。例如
jdbc:h2:tcp://localhost:8043/testdb:public;LOCK_MODE=0
jdbc:h2:tcp://localhost:8043/:testdb;LOCK_MODE=0
这更糟糕 - 无法连接 - 只是挂起。
更改底层数据源以在端口上运行
<bean id="internalXaDataSource" class="org.h2.jdbcx.JdbcDataSource" depends-on="h2Server">
<property name="URL" value="jdbc:h2:tcp://localhost:8043/mem:public;MODE=MSSQLServer"/>
<property name="description" value="#{randomUUID1.toString()}jdbcXa"/>
<property name="user" value="sa"/>
< property name="password" value=""/>
</bean>
这也只是在尝试连接时挂起。
你能解释一下我做错了什么吗? 谢谢
【问题讨论】:
-
尝试连接 H2 时遇到什么样的异常?
-
没有例外,只是在我尝试连接到这个 url 时没有加载到 ui 中:jdbc:h2:tcp://localhost:8043/mem:public;LOCK_MODE=0