連線 URL
Prisma ORM 需要一個連線 URL 才能連線到您的資料庫,例如使用 Prisma Client 傳送查詢或使用 Prisma Migrate 更改資料庫 schema 時。
連線 URL 透過 Prisma schema 中 `datasource` 塊的 `url` 欄位提供。它通常包含以下元件(SQLite 和 Prisma Postgres 除外):
- 使用者:您的資料庫使用者名稱
- 密碼:您的資料庫使用者密碼
- 主機:您的資料庫伺服器執行所在機器的 IP 地址或域名
- 埠:您的資料庫伺服器執行的埠
- 資料庫名稱:您要使用的資料庫名稱
開始使用 Prisma ORM 時,請確保您手頭有這些資訊。如果您還沒有執行資料庫伺服器,可以使用本地 SQLite 資料庫檔案(參見快速入門)或使用 Prisma Postgres 設定一個免費的 PostgreSQL 資料庫。
格式
連線 URL 的格式取決於您使用的資料庫聯結器。Prisma ORM 通常支援每種資料庫的標準格式。您可以在專門的文件頁面上找到有關資料庫連線 URL 的更多資訊:
特殊字元
對於 MySQL、PostgreSQL 和 CockroachDB,您必須對連線 URL 的任何部分(包括密碼)中的特殊字元進行百分比編碼。例如,`p@$$w0rd` 會變成 `p%40%24%24w0rd`。
對於 Microsoft SQL Server,您必須轉義連線字串任何部分中的特殊字元。
示例
以下是 Prisma ORM 支援的資料庫連線 URL 示例:
Prisma Postgres
Prisma Postgres 是一個執行在 unikernels 上的託管 PostgreSQL 服務。有幾種連線到 Prisma Postgres 的方式:
- 透過直接 TCP 連線(允許您透過任何 ORM 或資料庫工具連線)
- 透過 Prisma Accelerate(僅 Prisma ORM 支援)
- 本地
這些連線字串的格式將在下面介紹。
直接 TCP
當您透過直接 TCP 連線到 Prisma Postgres 時,您的連線字串如下所示:
DATABASE_URL="postgres://USER:PASSWORD@postgres.prisma-data.net:5432/?sslmode=require"
`USER` 和 `PASSWORD` 值是在您為 Prisma Postgres 例項生成憑據時提供的。這是一個帶示例值的例子:
DATABASE_URL="postgres://2f9881cc7eef46f094ac913df34c1fb441502fe66cbe28cc48998d4e6b20336b:sk_QZ3u8fMPFfBzOID4ol-mV@postgres.prisma-data.net:5432/?sslmode=require"
透過 Prisma Accelerate (HTTP)
透過 Prisma Accelerate 連線時,連線字串不需要像傳統連線字串那樣提供使用者/密碼。相反,身份驗證透過 API 金鑰進行:
datasource db {
provider = "postgresql"
url = "prisma+postgres://accelerate.prisma-data.net/?api_key=API_KEY"
}
在此程式碼片段中,`API_KEY` 是一個佔位符,代表您透過以下方式設定新的 Prisma Postgres 例項時獲得的 API 金鑰:。以下是一個實際的 Prisma Postgres 連線 URL 示例:
datasource db {
provider = "postgresql"
url = "prisma+postgres://accelerate.prisma-data.net/?api_key=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcGlfa2V5IjoiMGNkZTFlMjQtNzhiYi00NTY4LTkyM2EtNWUwOTEzZWUyNjU1IiwidGVuYW50X2lkIjoiNzEyZWRlZTc1Y2U2MDk2ZjI4NDg3YjE4NWMyYzA2OTNhNGMxNzJkMjhhOWFlNGUwZTYxNWE4NWIxZWY1YjBkMCIsImludGVybmFsX3NlY3JldCI6IjA4MzQ2Y2RlLWI5ZjktNDQ4Yy04NThmLTMxNjg4ODEzNmEzZCJ9.N1Za6q6NfInzHvRkud6Ojt_-RFg18a0601vdYWGKOrk"
}
本地 Prisma Postgres
連線 本地 Prisma Postgres 例項的連線字串與透過 Accelerate 連線遠端例項的結構類似:
datasource db {
provider = "postgresql"
url = "prisma+postgres://accelerate.prisma-data.net/?api_key=API_KEY"
}
然而,在這種情況下,`API_KEY` 不提供身份驗證詳細資訊。相反,它編碼了有關本地 Prisma Postgres 例項的資訊。您可以透過 `prisma dev` 命令獲取本地連線字串。
PostgreSQL
datasource db {
provider = "postgresql"
url = "postgresql://janedoe:mypassword@localhost:5432/mydb?schema=sample"
}
MySQL
datasource db {
provider = "mysql"
url = "mysql://janedoe:mypassword@localhost:3306/mydb"
}
Microsoft SQL Server
datasource db {
provider = "sqlserver"
url = "sqlserver://:1433;initial catalog=sample;user=sa;password=mypassword;"
}
SQLite
datasource db {
provider = "sqlite"
url = "file:./dev.db"
}
CockroachDB
datasource db {
provider = "cockroachdb"
url = "postgresql://janedoe:mypassword@localhost:26257/mydb?schema=public"
}
MongoDB
datasource db {
provider = "mongodb"
url = "mongodb+srv://root:<password>@cluster0.ab1cd.mongodb.net/myDatabase?retryWrites=true&w=majority"
}
.env
您也可以將連線 URL 作為環境變數提供:
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
然後,您可以在終端中設定環境變數,或者提供一個名為 `.env` 的 dotenv 檔案。Prisma CLI 將自動識別它。
Prisma ORM 在以下情況下從 dotenv 檔案讀取連線 URL:
- 在構建時更新 schema 時
- 在執行時連線到資料庫時
DATABASE_URL=postgresql://janedoe:mypassword@localhost:5432/mydb