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 显示为空且没有错误