当前位置: 首页 > 知识库问答 >
问题:

为什么我在H2模式中找不到我的表/如何验证我的Spring boot应用程序正在使用哪个H2模式?

鲜于光辉
2023-03-14

我正在运行一个Spring启动应用程序

除了maven之外,没有任何h2设置

当我连接到h2控制台时,我可以看到应该为两个实体创建的表

我连接了JDBC URL:jdbc: h2: mem: testdb(这应该是默认值)

是否有方法确保H2当前运行的模式是什么/或H2的一些日志文件?

在我的申请中。我有这样的属性:

spring.h2.console.enabled=true
spring.h2.console.path=/h2

我在某个地方读到H2在登录时初始化自己,但我正在看一个演示,这些是所采取的确切步骤,所以不确定是否如此。

以下是H@控制台中的设置:

共有3个答案

彭博厚
2023-03-14

有一种更简单的方法告诉Spring JPA the数据源的默认模式,只需在数据源url中添加“SET SCHEMA {default schema}”,例如:

spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;INIT=CREATE SCHEMA IF NOT EXISTS testdb\\;SET SCHEMA testdb
拓拔嘉运
2023-03-14

其实我一直都看到了正确的图式

我认为我没有看到正确的模式的原因是——我期望看到的JPA实体不在那里。

然后我发现这是因为我没有正确命名JPA实体的包

我把它命名为“域”(见图):

我应该把它命名为网站.example.域名,因为可以看出:

这是因为Spring Boot看起来在带有主类的包下执行@ComponentScan,所以我必须在“域”前加上主类所在的包的名称,即com.example

赫连开畅
2023-03-14

您可以使用如下配置明确指示Spring boot创建并连接到H2中的特定模式。

spring.datasource.url=jdbc:h2:~/test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=sa

这将在文件模式下以 h2 创建名称测试数据库的数据源。在您的个人文件夹中将有一个名为test.db的文件,该文件将是数据库的数据文件。

DB_CLOSE_ON_EXIT属性决定在每次重新启动时重新创建数据库。

 类似资料:
  • 我正在设置一个barebones Spring Boot项目,我在基本设置中遇到了一些问题。 DatabaseLoader似乎没有被调用,并且当我打开这个项目的H2控制台时,我没有看到包含Employee表的模式。 以下是我的pom.xml的相关部分: 带着:

  • 问题内容: 嗨,我的应用程序访问Postgres数据库,并且我有很多预定义的查询(Rank,Parition,complex join等)对Postgres触发。现在,我要使用小的测试数据对这些查询行为进行单元测试。所以我从H2 / Junit开始。我发现大多数Postgres查询,例如Rank,Partition,更新时的复杂情况等。因此,我想到使用所有H2 PosgreSQL兼容模式,因为我认

  • 我试图隐藏Actionbar并改用工具栏,但如果我更改Theme.appcompat.light.NoActionBar,它确实会隐藏,但应用程序在行setContentView(r.layout.activity_main)处崩溃; 尽管它确实使用getSupportActionBar()隐藏。hide();但我不能用这个代码 Toolbar Toolbar=(Toolbar)findViewB

  • 问题内容: 我遵循了h2数据库网站上的快速入门指南,在表中创建了一个新数据库并插入了一些数据。该应用程序运行流畅,可以毫无问题地读写数据库。 将h2 * .jar添加到类路径(H2没有任何依赖关系) 使用JDBC驱动程序类:org.h2.Driver 数据库URL jdbc:h2:〜/ test在用户主目录中打开数据库测试 自动创建一个新的数据库 现在,我想使用Web前端h2控制台查看数据,但是每

  • 我有一个spring data jpa应用程序,它使用H2进行存储。当我尝试将一些数据解析到表中时,我得到一个错误: 我有一个表定义为: 我的@Entity类为: 这是令人反感的记录,它显然小到足以容纳该列: 我所能想到的是分号或其他一些无效字符正在引发此异常。 有人能看到这里的问题,并提出处理它的替代方案吗?

  • 我计划使用PostgreSQL作为我的Quarkus应用程序的数据库,但我希望在测试中使用H2方便。 有没有办法完成这样的壮举?