我无法连接到h2数据库

3pmvbmvn  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(477)

我在看一个关于使用数据库的培训项目。那里的主数据库是mysql,h2用于测试,下面是一个教程:

<dependency>
      <groupId>com.h2database</groupId>
      <artifactId>h2</artifactId>
      <scope>test</scope>
</dependency>

在application.properties文件中指定了以下设置:

jdbc:
  driverClassName: org.h2.Driver
  pool.size.max: 10
  statement.timeout: 0
  url: jdbc:h2:mem:mytestdb;DB_CLOSE_ON_EXIT=FALSE
  username: sa
  password:

测试通过,即数据输入数据库,经过检查,一切正常。
但是当我在调试模式下运行测试时,在测试结束时放置一个断点并尝试连接到数据库,它是空的,甚至没有表,更不用说数据了。为了连接,我使用dbever。在连接字符串中,我写jdbc:h2:mem:mytestdb;db\u close\u on\u exit=false(我试过了)jdbc:h2:tcp://localhost:9092/mem:mytestdb). 检查连接过程,写入一切正常,连接已建立。有什么问题吗?
我尝试写入文件,而不是url:jdbc:h2:mem:ump-currencymanager; db\u close\u on\u exit=false我写了:url:jdbc:h2:file:c:\logs\logdb文件是在我用dbever打开它时创建的,甚至表也在那里,但是表本身没有数据。
关于这一主题的类似问题也得到了研究。

@Test
  public void createPeopleTable() throws SQLException {
    int count = peopleService.count();
    assertEquals(0, count);
    peopleService.createPeopleTable();
    count = peopleService.count();
    assertEquals(34, count);
  }
uajslkp6

uajslkp61#

您已经知道如何从内存数据库切换到基于文件的存储。
试着早点设置断点。也许在测试结束时,有一些清理会删除所有表?或者可能有一个拆卸的方法做清理?
另一个想法:在测试过程中的某个地方写一个备份:

connection.createStatement().execute("BACKUP TO '<desired-location>/backup.zip';");

相关问题