基于文件的 HSQLDB 不跟踪序列上的调用下一个值

File-based HSQLDB does not track call next value on sequence

如果我有一个基于文件的 HSQLDB 实例,并且我尝试将一些原始序列值放入我的 java 代码中:

JdbcTemplate(dataSource).queryForObject("call next value for mysequence", int.class)

然后当我重新启动数据库时,我在 db.script 中看到以下行:

ALTER SEQUENCE PUBLIC.MYSEQUENCE RESTART WITH 1

这意味着每次我重新启动时,MYSEQUENCE 都会从 1 重新开始,而不管调用下一个值在 DML 语句之外调用了多少次。

如果 mysequence 的下一个值作为更新或插入的一部分被调用,则 RESTART WITH 在 db.script 文件中看起来是正确的。

我可能做错了什么?

(跟进:我在 Derby 中尝试过相同的习惯用法,除了一个小问题,即意外的数据库关闭将导致序列在先前预分配的值之后开始,而不是下一个值,它按预期工作。H2 按预期工作)

您应该执行SHUTDOWN 语句来关闭数据库。这应该保留序列值。