通过 URL 使用 H2 内存数据库时“jdbc:h2:mem:test”,用户在尝试从以前创建的表中选择数据时可能会遇到错误“未找到表‘PERSON’”。出现此错误的原因是,默认情况下,H2 在使用 Hypernate 的 hbm2ddl 功能创建表后关闭数据库连接。
要解决此问题并保留数据库内容,请将连接 URL 修改为以下格式:
<code class="text">jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</code>
此参数指示 H2 只要 Java 虚拟机 (JVM) 运行,就保持内存数据库打开。通过在 URL 和参数之间添加分号 (;) 而不是冒号 (:),您可以指定其他参数。
正如文档所述,“关闭与数据库的最后一个连接将关闭数据库。对于内存数据库来说,这意味着内容会丢失。”通过设置 DB_CLOSE_DELAY=-1 参数,可以确保数据库在 JVM 终止之前保持打开状态,即使在连接关闭后也能保留数据。
以上是为什么 H2 内存数据库会出现'找不到表”错误以及如何修复?的详细内容。更多信息请关注PHP中文网其他相关文章!