Redon

一心的小屋

Prisma 常用命令

发布于 # Prisma

Prisma Site

安装

pnpm add prisma -D
pnpm add @prisma/client

初始化

可选数据库:sqlite、postgresql、mysql、sqlserver

npx prisma init --datasource-provider sqlite

prisma.ts 文件

数据库的操作一般都是引入 prisma.ts 文件进行

import { PrismaClient } from "@prisma/client";

import { env } from "@/env";

const globalForPrisma = globalThis as unknown as {
  prisma: PrismaClient | undefined;
};

export const db =
  globalForPrisma.prisma ??
  new PrismaClient({
    log:
      env.NODE_ENV === "development" ? ["query", "error", "warn"] : ["error"],
  });

if (env.NODE_ENV !== "production") globalForPrisma.prisma = db;

模型示例

schema.prisma 文件中创建示例模型

model User {
  id    Int     @id @default(autoincrement())
  email String  @unique
  name  String?
  posts Post[]
}

model Post {
  id        Int     @id @default(autoincrement())
  title     String
  content   String?
  published Boolean @default(false)
  author    User    @relation(fields: [authorId], references: [id])
  authorId  Int
}

更新模型

npx prisma migrate dev

这会生成一个新的迁移,并会让 Prisma 帮我们完成这些工作:

  • 根据 schema.prisma 中的模型定义,生成了创建这些模型所需的 SQL 语句
  • 迁移文件的名称包含了 migrate 命令中可以指定 “—name” 参数,便于版本控制

生成 Prisma Client

npx prisma generate
  • Prisma Client 是一个类型安全的数据库访问库,它是根据 schema.prisma 中的模型定义生成的
  • Prisma Client 会根据 schema.prisma 中的模型定义生成一个强类型的数据访问层,这样我们就可以在代码中使用它了

Prisma Studio

npx prisma studio
  • Prisma Studio 是一个可视化的数据库管理工具,它可以让我们在浏览器中查看和管理数据库中的数据

Push & Pull

npx prisma db push
npx prisma db pull
  • db push 命令会将本地的 schema.prisma 文件中的模型定义推送到数据库中
  • db pull 命令会将数据库中的模型定义拉取到本地的 schema.prisma 文件中

更新生产环境数据库

npx prisma migrate deploy
  • 在本地运行:npx prisma migrate dev —name add_new_field 来生成新的迁移文件
  • 将生成的迁移文件更新到生产环境数据库:npx prisma migrate deploy

重置数据库

npx prisma migrate reset
  • 重置数据库会删除所有的表,然后重新运行所有的迁移
  • 重置数据库会删除所有的数据,所以在生产环境中不要使用这个命令

批准迁移

npx prisma migrate resolve
  • 如果想让迁移生效,我们通常需要运行 npx prisma migrate deploy
  • 但是,如果我们想要在生产环境中运行迁移,但又不想运行 deploy 命令,我们可以使用 resolve 命令