【问题标题】:Warning when using Apache Derby in memory在内存中使用 Apache Derby 时出现警告
【发布时间】:2011-07-22 01:03:36
【问题描述】:

我有许多单元测试,它们在内存中使用 Apache Derby。 我的连接网址是:jdbc:derby:memory:srf.derby;create=true

我发现每次当一个标记为@Transactional 的方法结束时,我都会收到一个 Derby 警告

12:53:28:5328 [org.hibernate.util.JDBCExceptionReporter] [main] WARN  - SQL Warning: 10000, SQLState: 01J01
12:53:28:5328 [org.hibernate.util.JDBCExceptionReporter] [main] WARN  - Database 'memory:srf.derby' not created, connection made to existing database instead.

为什么会这样?我做错了什么?

谢谢

【问题讨论】:

  • 是 Spring 的 @Transactional 吗?

标签: derby in-memory


【解决方案1】:

你没有做错任何事。您每次都传递 ';create=true',但数据库仅在您的程序第一次访问它时创建。由于它在内存中,因此数据库会一直挂起,直到您的程序退出,然后它就会消失。

您可以通过仅在测试套件中的第一个测试中传递 ';create=true' 来避免警告,随后的测试不需要传递该值。

或者,您可以不用担心警告。

【讨论】:

  • 我发现问题不在于数据库创建。在同一测试中,每次我执行事务方法时都会打印此警告。我切换到基于文件的嵌入式数据库,但仍然有相同的警告
  • 准确地说,每次您使用包含“;create=true”的连接 URL 连接到已经存在的 Derby 数据库时,都会收到警告。这不是因为它在内存中,而是因为它已经存在并且您正在告诉 Derby 创建它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-10
  • 1970-01-01
  • 1970-01-01
  • 2013-10-11
  • 2015-04-18
相关资源
最近更新 更多