文件

§H2 資料庫

注意:從 Play 2.6.x 開始,您實際上需要自行包含 H2 相依性。為此,您只需將下列內容新增至您的 build.sbt

libraryDependencies += "com.h2database" % "h2" % "1.4.192"

H2 記憶體中的資料庫非常適合開發,因為當 Play 重新啟動時,您的演化會從頭開始執行。如果您使用 Anorm,您可能需要它來緊密模擬您計畫中的生產資料庫。若要告訴 h2 您想要模擬特定資料庫,請在 application.conf 檔中將參數新增至資料庫網址,例如

db.default.url="jdbc:h2:mem:play;MODE=MYSQL"

§目標資料庫

MySql MODE=MYSQL
  • H2 沒有 uuid() 函數。您可以改用 random_uuid()。或將下列程式碼插入您的 1.sql 檔案
    CREATE ALIAS UUID FOR
    "org.h2.value.ValueUuid.getNewRandom";
  • MySQL 中的文字比較預設為不區分大小寫,而 H2 則區分大小寫(與大多數其他資料庫相同)。H2 支援不區分大小寫的文字比較,但需要另外設定,使用 SET IGNORECASE TRUE。這會影響使用 =、LIKE、REGEXP 的比較。
DB2 MODE=DB2
Derby MODE=DERBY
HSQLDB MODE=HSQLDB
MS SQL MODE=MSSQLServer
Oracle MODE=Oracle
PostgreSQL MODE=PostgreSQL

§防止記憶體中的資料庫重設

H2 預設會在沒有任何連線時刪除您的記憶體中的資料庫。您可能不希望發生這種情況。若要防止這種情況,請將 DB_CLOSE_DELAY=-1 新增到網址(使用分號作為分隔符號),例如:jdbc:h2:mem:play;MODE=MYSQL;DB_CLOSE_DELAY=-1

注意:Play 內建的 JDBC 模組會自動新增 DB_CLOSE_DELAY=-1,但是如果您使用 play-slick 搭配演化,您需要手動將 ;DB_CLOSE_DELAY=-1 新增到您的資料庫網址,否則演化將會陷入無限迴圈,因為 Play 應用程式在執行演化後會重新啟動,因此套用的演化將會直接遺失。

§注意事項

H2 預設會建立名稱為大寫的表格。有時您不希望發生這種情況,例如在某些相容模式下使用 H2 搭配 Play 演化時。若要防止這種情況,請將 DATABASE_TO_UPPER=FALSE 新增到網址(使用分號作為分隔符號),例如:jdbc:h2:mem:play;MODE=PostgreSQL;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=FALSE

§H2 瀏覽器

您可以在 sbt shell 中輸入 h2-browser 來瀏覽資料庫內容。SQL 瀏覽器將在您的網路瀏覽器中執行。

§H2 文件

更多 H2 文件可從 其網站 取得。

下一頁:管理資料庫演進


在此文件中發現錯誤?此頁面的原始碼可在此處找到 here。在閱讀 文件指南 後,請隨時提交拉取請求。有問題或建議要分享嗎?請前往 我們的社群論壇 與社群展開對話。