我有一个带有 URL 的 H2 数据库"jdbc:h2:test"。我使用CREATE TABLE PERSON (ID INT PRIMARY KEY, FIRSTNAME VARCHAR(64), LASTNAME VARCHAR(64));. 然后我使用SELECT * FROM PERSON. 到目前为止,一切都很好。
"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]. 我可能在这里遗漏了一些简单的东西,但我们将不胜感激。
"jdbc:h2:mem:test"
org.h2.jdbc.JdbcSQLException: Table "PERSON" not found; SQL statement: SELECT * FROM PERSON [42102-154]
DB_CLOSE_DELAY=-1
hbm2ddl 在创建表后关闭连接,因此 h2 将其丢弃。
如果您的连接网址配置如下
jdbc:h2:mem:test
数据库的内容在最后一个连接关闭时丢失。
如果你想保留你的内容,你必须像这样配置 url
jdbc:h2:mem:test;DB_CLOSE_DELAY=-1
如果这样做,只要 vm存在,* h2 就会保留其内容。 *
注意分号 ( ;) 而不是冒号 ( :)。
;
:
请参阅 功能 页面 的内存数据库 部分。去引用: __
默认情况下,关闭与数据库的最后一个连接会关闭数据库。对于内存数据库,这意味着内容丢失。要保持数据库打开,请添加;DB_CLOSE_DELAY=-1到数据库 URL。只要虚拟机处于活动状态,要保留内存数据库的内容,请使用jdbc:h2:mem:test;DB_CLOSE_DELAY=-1.
;DB_CLOSE_DELAY=-1