H2 資料庫避坑指南

飛機飛過天空發表於2020-10-07

使用者名稱密碼

剛開始連線 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 協議》,轉載必須註明作者和本文連結

相關文章