H2 数据库避坑指南

用户名密码

刚开始连接 H2 数据库时,使用 Embedded 连接,URL 为 jdbc: h2:~/h2/community 并没有使用用户名和密码,是没有问题的。

但是,后面在 application.properties 中配置 H2 后,项目跑起来后,突然说用户名和密码不正确。

试了在网上推荐的:username = 'sa', password = ''。也不好使。

然后发现可以直接去创建一个用户:使用下列语句在 H2 中创建一个用户名为 root 密码为 root 的用户。

create user if not exists root password 'root';
alter user root admin true; 

在项目中使用 username = 'root', password = 'root' 就好了。

id 自增

在使用的过程中未正常关闭 H2 的连接,可能会导致插入的数据 ID 自增为 32。这是因为当 H2 未正常关闭,系统会默认你丢失 cache 中设置的大小,默认为 32。

为此,官方的回应为:

  • 忽略 ID 每次自动增长 32。
  • 正常关闭 H2 数据库连接。
  • 手动修改序列,将 cache size 修改的更小。

这里我直接将我使用的序列(sequences)设置不使用缓存。

alter sequence PUBLIC.SYSTEM_SEQUENCE_21E3056E_BDF1_4391_A071_888A3AB936B2 restart with 1 cycle no cache

这里的 SYSTEM_SEQUENCE_21E3056E_BDF1_4391_A071_888A3AB936B2 要换上自己对应表的序列。

这里的 1 是 ID 从 1 开始,以后不再使用缓存。如果将 1 改为 100。下一次插入数据就是从 100 开始插入。

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!