H2 DB为空,未显示任何表

时间:2018-11-07 09:27:03

标签: java h2

我正在尝试连接以执行集成测试,为此,我需要H2数据库重新创建一些视图。

我正在使用以下属性:

<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>

这也只是在尝试连接时挂起。

您能解释我在做什么错吗? 谢谢

1 个答案:

答案 0 :(得分:0)

弄清楚了。已经使用IntelliJ调试器暂停了正在运行的集成测试,因此我可以连接到H2。但是,将断点设置设置为停止整个JVM。通过在IntelliJ中编辑故障设置以仅暂停线程来解决。然后能够通过上面的第三种方法进行连接。