当前位置: 首页 > 面试题库 >

H2内存数据库 找不到表格

荣轶
2023-03-14
问题内容

我有一个带有URL的H2数据库"jdbc:h2:test"。我使用创建表格CREATE TABLE PERSON (ID INT PRIMARY KEY, FIRSTNAME VARCHAR(64), LASTNAME VARCHAR(64));。然后,我使用从(空)表中选择所有内容SELECT * FROM PERSON。到目前为止,一切都很好。

但是,如果将URL更改为"jdbc:h2:mem:test",唯一的区别是数据库现在仅在内存中,这给了我一个提示org.h2.jdbc.JdbcSQLException: Table "PERSON" not found; SQL statement: SELECT * FROM PERSON [42102-154]。我可能在这里缺少一些简单的东西,但是任何帮助将不胜感激。


问题答案:

hbm2ddl在创建表后关闭连接,因此h2放弃该连接。

如果你的连接网址是这样配置的

jdbc:h2:mem:test

在最后一个连接关闭时,数据库的内容会丢失。

如果要保留内容,则必须像这样配置网址

jdbc:h2:mem:test;DB_CLOSE_DELAY=-1

如果这样做,h2将保留其内容,直到虚拟机存活。



 类似资料:
  • 我试图用内存中的数据库来测试JDBC客户机,这样我就可以用单元测试来测试各种情况。 以下是我目前掌握的信息: 测试目录中的Application.Properties如下所示:

  • 我对冬眠很陌生,所以我的问题对你来说很明显。我在H2控制台用3个表(data.mv.db)创建了数据库,插入一些值,然后将其复制到项目路径中的数据库文件夹中。现在我试图阅读其中一个测试,但总是有错误,即表不存在。我试着给连接url添加一些属性,比如连接延迟或者不把字母改成大写,但仍然是一样的。 错误: 我试过编辑配置。所以我补充: 并使数据库为空。奇怪的是,在H2控制台打开后,Java创建的数据库

  • 我使用h2db进行测试,使用hibernate自动创建表,但希望flyway在数据库中插入脚本。所以,我的飞行路线没有创建脚本。 首先,我不确定这是否可能。但是当我使用一些插入脚本时,我的测试失败了,因为flyway无法插入记录,抱怨表格不存在。 似乎在h2创建表之前,它就已经在尝试运行脚本了。 我正在使用Spring靴来调用飞行路线。所以,我只需要这个依赖项和一个数据库。类路径中的migarat

  • 我正在inMemory数据库中插入数据,当插入数据时,我得到了一个问题, 使用boot、JPA、H2db在内存中插入数据的示例程序 > 创建Pojo并使用JPA注释进行注释 > 配置在app.prop:中 在data.sql文件中添加了给定表 为data.sql中提到的转换添加了名称。 在哪里配置;在Springboot中? 波乔 控制器 错误原因:对名为'in memorydatabaseShu

  • 我阅读了发行说明,找到了关于嵌入式数据库检测的部分:https://github.com/spring-projects/spring-boot/wiki/spring-boot-2.4-release-notes#embedded-database-detection 但加上 对财产也没有帮助。 你能给我一个提示吗,是什么导致了这个问题? 亲切的问候,乌尔里希

  • 示例类: 属性(源): 但是,每当我访问并单击Connect时,就会直接指向一个空白的白色页面。当我使用“测试连接”按钮时,它说“测试成功”。正如本问题中提到的,我尝试了JDBC:h2:mem:testdb和JDBC:h2:~/test来获取JDBC URL。 IDE控制台中不会显示错误。问题可能是什么?谢了。