跳到主要內容

SQLite

SQLite 資料來源連接器將 Prisma ORM 連接到 SQLite 資料庫檔案。這些檔案的副檔名總是 .db (例如:dev.db)。

預設情況下,SQLite 連接器包含一個資料庫驅動程式,負責連線到您的資料庫。您可以使用驅動程式轉接器 (預覽) 以使用 Prisma Client 的 JavaScript 資料庫驅動程式連線到您的資料庫。

範例

若要連線到 SQLite 資料庫檔案,您需要在您的 Prisma schema 中設定 datasource 區塊

schema.prisma
datasource db {
provider = "sqlite"
url = "file:./dev.db"
}

傳遞到 datasource 區塊的欄位為

  • provider:指定 sqlite 資料來源連接器。
  • url:指定 SQLite 資料庫的連線 URL。連線 URL 總是以前綴 file: 開始,然後包含指向 SQLite 資料庫檔案的檔案路徑。在此範例中,檔案位於相同目錄中,並命名為 dev.db

SQLite 到 Prisma schema 的類型映射

SQLite 連接器將 純量類型資料模型 映射到原生資料行類型,如下所示

或者,請參閱Prisma schema 參考,以查看依 Prisma ORM 類型組織的類型映射。

從 Prisma ORM 到 SQLite 的原生類型映射

Prisma ORMSQLite
StringTEXT
BooleanBOOLEAN
IntINTEGER
BigIntINTEGER
FloatREAL
DecimalDECIMAL
DateTimeNUMERIC
JsonJSONB
BytesBLOB
EnumTEXT
警告

當在 SQLite 中使用 enum 欄位時,請注意以下事項

  • 資料庫層級未強制執行正確性:如果您繞過 Prisma ORM 並在資料庫中儲存無效的 enum 項目,當 Prisma Client 在執行階段讀取該項目時將會失敗。
  • 移轉層級未強制執行正確性:與 MongoDB 類似,在架構變更後,可能會導致不正確的資料 (因為資料庫未檢查 enum)。

大數字的捨入誤差

SQLite 是一個寬鬆類型的資料庫。如果您的 Schema 具有 Int 類型的欄位,則 Prisma ORM 會阻止您插入大於整數的值。但是,沒有任何機制阻止資料庫直接接受更大的數字。這些手動插入的大數字在查詢時會導致捨入誤差。

為了避免此問題,Prisma ORM 4.0.0 及更高版本會在數字從資料庫輸出時檢查數字,以驗證它們是否在整數的範圍內。如果數字不符合,則 Prisma ORM 會拋出 P2023 錯誤,例如

Inconsistent column data: Conversion failed:
Value 9223372036854775807 does not fit in an INT column,
try migrating the 'int' column type to BIGINT

連線詳細資訊

連線 URL

SQLite 連接器的連線 URL 指向您檔案系統上的檔案。例如,以下兩個路徑是等效的,因為 .db 位於相同的目錄中

schema.prisma
datasource db {
provider = "sqlite"
url = "file:./dev.db"
}

schema.prisma
datasource db {
provider = "sqlite"
url = "file:dev.db"
}

您也可以從根目錄或檔案系統中的任何其他位置指定檔案

schema.prisma
datasource db {
provider = "sqlite"
url = "file:/Users/janedoe/dev.db"
}