Prisma 生成的类型未更新

问题描述 投票:0回答:4

我使用 Prisma 作为 ORM,并且必须删除一些列并添加其他列。我已经使用新列更新了数据库并重新创建了 prisma 架构,但问题是现在每次我尝试插入新条目时,都会收到此错误:

Unknown arg "picture" in create.picture for type usersCreateInput. Did you mean "image"?

“图片”是新列之一,“图像”是已删除的列之一,似乎生成的类型没有正确更新,因为其中一个新列存在(email_verified),但另一个(图片)不是。

type usersCreateInput {
  name?: String | Null
  email?: String | Null
  email_verified?: DateTime | Null
  image?: String | Null
  mentor?: Boolean | Null
  weekly_time?: Int | Null
  journey?: String | Null
  pronouns?: String | Null
  occupation?: String | Null
  description?: String | Null
  created_at?: DateTime
  updated_at?: DateTime
  skills?: usersCreateskillsInput | List<String>
  boards?: boardsCreateNestedOneWithoutUsersInput
}

这些正是我所做的步骤:

  1. 更改了 Docker 使用的 init.sql 文件
  2. 根据新的init.sql重新创建数据库
  3. 删除现有架构,然后
    npx prisma init
  4. 运行
    npx prisma db pull
    npx prisma generate
    以根据已存在的数据库重新创建架构,重要的是要注意我检查了架构并且它是正确的:
model users {
  id             Int        @id @default(autoincrement())
  name           String?    @db.VarChar(255)
  email          String?    @unique(map: "email") @db.VarChar(255)
  email_verified Boolean?
  picture        String?
  mentor         Boolean?
  skills         String[]
  weekly_time    Int?
  journey        String?    @db.VarChar(255)
  pronouns       String?    @db.VarChar(255)
  occupation     String?
  description    String?    @db.VarChar(255)
  created_at     DateTime   @default(now()) @db.Timestamptz(6)
  updated_at     DateTime   @default(now()) @db.Timestamptz(6)
  boards         boards?
  sessions       sessions[]
}

有没有办法完全重置prisma?我也尝试删除node_modules并再次安装所有内容,但没有解决。

postgresql orm prisma
4个回答
18
投票

如果您遇到问题,认为 TypeScript 无法正常工作,您可以随时尝试按 Ctrl+Shift+P 并输入 >重新启动 TS 服务器来重新启动 TypeScipt 语言服务器。确保首先导航到 .ts 文件!

这样你就不必重新打开 VSCode。


5
投票

我也有同样的问题。解决方案是运行命令

npm i
删除当前的Prisma Client(无需删除node_modules),然后运行
npx prisma generate
重新创建一个新的Prisma Client。

此后,我在尝试查询新列时仍然遇到错误,但解决方案是关闭并重新打开编辑器,在我的例子中是 VS Code。


0
投票

我在此遇到了可怕的 ID-10-T 错误。我的模型称为 Item。当我在一行的开头开始打字时,我依靠打字稿来帮助我

Prisma.ItemCrea...

Intellisense 没有给我任何东西。不管出于什么原因,我决定尝试一下。

let x: Prisma.ItemCrea... // there it is, pops right up!

尝试定义一个变量或将其设置为函数或其他内容的返回类型...然后它会显示在 VSCode 智能感知中。 脸掌。


0
投票

我遇到了同样的问题,但我发现我的类型导入有问题。 我以前就是这么用的。

import { PrismaClient } from '.prisma/client';

后来我改成了下面的代码,解决了问题。

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

不知道这些能不能帮到你

© www.soinside.com 2019 - 2024. All rights reserved.