Prisma.js:我们发现无法执行的更改

Jah*_*han 2 orm node.js express prisma prisma2

我在我的项目中使用 prisma.js 作为 ORM。

\n

执行后npx prisma migrate dev --name rename_and_add_some_columns,\n我收到此错误:

\n
\n

我们发现无法执行的更改

\n
\n

错误详情:

\n
\n

步骤 1 将所需的列添加CategoryIdPost表\n,但没有默认值。该表中有 2 行,\n无法执行此步骤。\xe2\x80\xa2 步骤 1 将所需的列\n 添加ModifiedDatePost表中,但没有默认值。该表中有\n2 行,无法执行此步骤。\xe2\x80\xa2\n步骤 2 将所需的列添加ModifiedDateProfile表\n,但没有默认值。该表中有 1 行,\n无法执行此步骤。\xe2\x80\xa2 步骤 4 将所需的列\n 添加ModifiedDateUser表中,但没有默认值。该表中有\n2 行,无法执行此步骤。

\n

您可以使用 prisma migrate dev --create-only 创建迁移\n文件,并手动修改它以解决根本问题。然后\n运行 prisma migrate dev 以应用它并验证它是否有效。

\n
\n

我该如何解决?

\n

// 这是我的 Prisma 架构文件,

\n
datasource db {\n  provider = "mysql"\n  url      = env("DATABASE_URL")\n}\n\ngenerator client {\n  provider = "prisma-client-js"\n}\n\nmodel Category {\n  Id           Int      @id @default(autoincrement())\n  CreatedDate  DateTime @default(now())\n  ModifiedDate DateTime @updatedAt\n  Title        String   @db.VarChar(50)\n  IsActive     Boolean\n  Posts        Post[]\n}\n\nmodel Post {\n  Id                 Int       @id @default(autoincrement())\n  CreatedDate        DateTime  @default(now())\n  ModifiedDate       DateTime  @updatedAt\n  Title              String    @db.VarChar(255)\n  Description        String?\n  IsPublished        Boolean   @default(false)\n  IsActive           Boolean   @default(true)\n  IsActiveNewComment Boolean   @default(true)\n  Author             User      @relation(fields: [AuthorId], references: [Id])\n  AuthorId           Int\n  Comment            Comment[]\n  Tag                Tag[]     @relation("TagToPost", fields: [tagId], references: [Id])\n  tagId              Int?\n  Category           Category  @relation(fields: [CategoryId], references: [Id])\n  CategoryId         Int\n}\n\nmodel User {\n  Id           Int       @id @default(autoincrement())\n  CreatedDate  DateTime  @default(now())\n  ModifiedDate DateTime  @updatedAt\n  Email        String    @unique\n  Name         String?\n  Posts        Post[]\n  Profile      Profile?\n  Comments     Comment[]\n}\n\nmodel Profile {\n  Id           Int      @id @default(autoincrement())\n  CreatedDate  DateTime @default(now())\n  ModifiedDate DateTime @updatedAt\n  Bio          String?\n  User         User     @relation(fields: [UserId], references: [Id])\n  UserId       Int      @unique\n}\n\nmodel Comment {\n  Id           Int      @id @default(autoincrement())\n  CreatedDate  DateTime @default(now())\n  ModifiedDate DateTime @updatedAt\n  Comment      String\n  WrittenBy    User     @relation(fields: [WrittenById], references: [Id])\n  WrittenById  Int\n  Post         Post     @relation(fields: [PostId], references: [Id])\n  PostId       Int\n}\n\nmodel Tag {\n  Id           Int      @id @default(autoincrement())\n  CreatedDate  DateTime @default(now())\n  ModifiedDate DateTime @updatedAt\n  Title        String   @unique\n  Posts        Post[]   @relation("TagToPost")\n}\n
Run Code Online (Sandbox Code Playgroud)\n

Rya*_*yan 14

为了运行此迁移,您需要:

  1. 首先创建可选字段,然后运行migrate

  2. 首先在字段中填写所需的日期。

  3. ?从字段中删除可选的 ( )。

Prisma 会自动添加@updatedAt(不是在数据库级别完成),因此需要遵循这些步骤。