跳至主要内容

连接 URL

Prisma ORM 需要一个连接 URL 才能连接到您的数据库,例如使用 Prisma Client 发送查询或使用 Prisma Migrate 更改数据库 schema 时。

连接 URL 通过 Prisma 配置(如果版本为 6,则为 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@db.prisma.io:5432/?sslmode=require"

USERPASSWORD 值在您在中为您的 Prisma Postgres 实例生成凭据时提供。这是一个带示例值的示例:

DATABASE_URL="postgres://2f9881cc7eef46f094ac913df34c1fb441502fe66cbe28cc48998d4e6b20336b:sk_QZ3u8fMPFfBzOID4ol-mV@db.prisma.io:5432/?sslmode=require"

通过 Prisma Accelerate (HTTP)

通过 Prisma Accelerate 连接时,连接字符串不需要像传统连接字符串那样提供用户名/密码。相反,身份验证通过 API 密钥进行:

prisma.config.ts
export default defineConfig({
datasource: {
url: "prisma+postgres://accelerate.prisma-data.net/?api_key=API_KEY"
},
});

在此片段中,API_KEY 是您通过设置新 Prismas Postgres 实例时收到的 API 密钥的占位符。这是一个真实的 Prisma Postgres 连接 URL 的示例:

prisma.config.ts
export default defineConfig({
datasource: {
url: "prisma+postgres://accelerate.prisma-data.net/?api_key=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcGlfa2V5IjoiMGNkZTFlMjQtNzhiYi00NTY4LTkyM2EtNWUwOTEzZWUyNjU1IiwidGVuYW50X2lkIjoiNzEyZWRlZTc1Y2U2MDk2ZjI4NDg3YjE4NWMyYzA2OTNhNGMxNzJkMjhhOWFlNGUwZTYxNWE4NWIxZWY1YjBkMCIsImludGVybmFsX3NlY3JldCI6IjA4MzQ2Y2RlLWI5ZjktNDQ4Yy04NThmLTMxNjg4ODEzNmEzZCJ9.N1Za6q6NfInzHvRkud6Ojt_-RFg18a0601vdYWGKOrk"
},
});

本地 Prisma Postgres

连接到本地 Prisma Postgres 实例的连接字符串与通过 Accelerate 连接的远程实例的结构相似:

prisma.config.ts
export default defineConfig({
datasource: {
url: "prisma+postgres://accelerate.prisma-data.net/?api_key=API_KEY"
},
});

然而,在这种情况下,API_KEY 不提供身份验证详细信息。相反,它编码了有关本地 Prisma Postgres 实例的信息。您可以通过 prisma dev 命令获取本地连接字符串。

PostgreSQL

prisma.config.ts
export default defineConfig({
datasource: {
url: "postgresql://janedoe:mypassword@localhost:5432/mydb?schema=sample"
},
});

MySQL

prisma.config.ts
export default defineConfig({
datasource: {
url: "mysql://janedoe:mypassword@localhost:3306/mydb"
},
});

Microsoft SQL Server

prisma.config.ts
export default defineConfig({
datasource: {
url: "sqlserver://:1433;initial catalog=sample;user=sa;password=mypassword;"
},
});

SQLite

prisma.config.ts
export default defineConfig({
datasource: {
url: "file:./dev.db"
},
});

CockroachDB

prisma.config.ts
export default defineConfig({
datasource: {
url: "postgresql://janedoe:mypassword@localhost:26257/mydb?schema=public"
},
});

MongoDB

对 MongoDB 的支持仅限于 Prisma 6。我们正在努力在 Prisma 7 中支持 MongoDB。

schema.prisma
datasource db {
provider = "mongodb"
url = "mongodb+srv://root:<password>@cluster0.ab1cd.mongodb.net/myDatabase?retryWrites=true&w=majority"
}

.env

您还可以将连接 URL 作为环境变量提供:

schema.prisma
datasource db {
provider = "postgresql"
}

然后,您可以在终端中设置环境变量,或者提供名为 .envdotenv 文件。这将由 Prisma CLI 自动读取。

Prisma ORM 在以下情况下从 dotenv 文件读取连接 URL:

  • 在构建时更新 schema 时
  • 在运行时连接到数据库时
DATABASE_URL=postgresql://janedoe:mypassword@localhost:5432/mydb
© . This site is unofficial and not affiliated with Prisma Data, Inc.