H2 DB 为空且未显示任何表

Posted

技术标签:

【中文标题】H2 DB 为空且未显示任何表【英文标题】:H2 DB is empty and no tables are shown 【发布时间】: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 【参考方案1】:

想通了。已暂停使用 IntelliJ 调试器运行的集成测试,以便我可以连接到 H2。然而,断点设置被设置为停止整个 JVM。通过在 IntelliJ 中编辑细分设置以仅暂停线程来修复。然后就可以通过上面的第三种方法连接了。

【讨论】:

以上是关于H2 DB 为空且未显示任何表的主要内容,如果未能解决你的问题,请参考以下文章

ios ipad UIPopoverController 显示为空且没有错误

$_FILES 为空且不包含任何数据 [重复]

如果表为空,则插入多条记录

DB2 - 如果日期 X 的表为空,则插入,否则继续

css 根据选定的下拉列表显示输入字段并根据显示的输入内容更改隐藏的输入值(如果为空且如果不为空

从 json 填充单元格时表为空