我使用JDBC并从sql脚本创建名为usaDB的h2数据库。然后我用jdbc填充所有表。
问题是我在localhost:8082连接到usaDB后,我在左侧树上看不到
我的桌子。我只指定了INFORMATION_SCHEMA数据库和rootUser
来创建usaDB。
如何在h2数据库中查看表的内容?
我尝试了查询SELECT * FROM INFORMATION_SCHEMA.TABLES
。
但它返回了许多表名,除了我创建的那些。我的快照:
答案 0 :(得分:41)
我有同样的问题,答案似乎真的很愚蠢:当你输入你的数据库名称时,你不应该添加“ .h2.db ”后缀,例如,如果你有数据库文件“ D:\ somebase.h2.db ”您的连接字符串应该类似于“ jdbc:h2:file:/ D:/ somebase ”。换句话说,jdbc创建了一个名为“ somebase.h2.db.h2.db ”的新空数据库文件,你会看到你所看到的:只有系统表。
答案 1 :(得分:19)
您可以使用SHOW
命令:
使用此命令,可以列出表的模式,表或列。 e.g:
taking Apple from room 3 : {'Arrow': 3, 'Bow': 1}
-- Sorry, no Apple in room 3 to take
taking Apple from room 4 : {'Arrow': 5}
-- Sorry, no Apple in room 4 to take
dropping monkey in room 6 : {'Arrow': 10}
-- dropped monkey in room 6 : {'monkey': 1, 'Arrow': 10}
dropping Apple in room 5 : {'Bow': 1}
-- dropped Apple in room 5 : {'Apple': 1, 'Bow': 1}
taking Bow from room 3 : {'Arrow': 3, 'Bow': 1}
-- took Bow from room 3 : {'Arrow': 3}
dropping monkey in room 3 : {'Arrow': 3}
-- dropped monkey in room 3 : {'monkey': 1, 'Arrow': 3}
dropping Arrow in room 6 : {'monkey': 1, 'Arrow': 10}
-- dropped Arrow in room 6 : {'monkey': 1, 'Arrow': 11}
taking Bow from room 5 : {'Apple': 1, 'Bow': 1}
-- took Bow from room 5 : {'Apple': 1}
taking Bow from room 4 : {'Arrow': 5}
-- Sorry, no Bow in room 4 to take
taking Bow from room 5 : {'Apple': 1}
-- Sorry, no Bow in room 5 to take
答案 2 :(得分:12)
这个问题驱使我绕过扭曲,除了这个页面,我读了很多(很多!)其他人,直到我解决了它。
我的用例是看看使用 :: Spring Boot ::(v1.3.1.RELEASE)在STS中创建的SpringBatch项目将如何与H2数据库一起运行;要做到后者,我需要能够运行H2控制台来查询批处理运行的DB结果。
这就是我所做的并且发现了:
现在在STS中创建一个SpringBatch项目如下(替代方法创建了一个不同的模板,缺少大多数类来保存数据。这个方法创建了2个项目:一个完成,以及其他初始。使用下面的完整。):
答案 3 :(得分:4)
我遇到了这个问题。
根据您的描述,我认为您将jdbc与“真正的”h2服务器连接,但是您通过错误的模式将Web应用程序连接到数据库(嵌入式内存模式,又名h2mem
)。这意味着h2将在内存中创建一个新数据库,而不是使用存储在其他地方的真实数据库。
请确保在连接到此数据库时,使用模式通用H2(服务器),而不是通用H2(嵌入式)。您可以参考下图。
答案 4 :(得分:2)
这是一个老问题,但我遇到了同样的问题。最后我发现默认的JDBC URL指的是测试服务器而不是我的应用程序。纠正后,我可以访问正确的数据库。
我尝试使用Generic H2(嵌入式)和Generic H2(服务器)选项,只要正确提供 JDBC URL :这两种选项都可以使用。
答案 5 :(得分:1)
jar文件和已安装的h2数据库的版本应该相同。
答案 6 :(得分:0)
在我的情况下,问题是由于我没有在java中设置h2用户名,密码。不幸的是,Spring并没有向我显示任何错误,所以要弄清楚并不容易。将这些行添加到dataSource方法帮助我解决了这个问题:
dataSource.setUsername("sa");
dataSource.setPassword("");
另外,我应该在schema.sql
中创建表时指定模式答案 7 :(得分:0)
选择Generic H2(服务器)为我解决了。我们很想使用默认的Generic H2(嵌入式),这是错误的。
答案 8 :(得分:0)
如果在春季启动时使用maven依赖关系创建并填充了H2数据库表,那么在使用Web控制台连接到H2时,请务必将JDBC URL更改为jdbc:h2:mem:testdb
。
答案 9 :(得分:0)
对于在嵌入式(持久模式)下使用H2并希望从IntelliJ“连接”到H2的人们(其他IDE也可能适用)。
jdbc:h2:./database.h2
./
jdbc:h2:/Users/me/projects/MyAwesomeProject/database.h2
;MV_STORE=false
。它禁用了MVStore引擎,实际上,H2当前默认使用该引擎。