prisma migrate dev 오류

seokki kwon·2022년 9월 29일
0

prisma migrate 후 트리거 관련 테스트 도중

The migration 20220929144324_ was modified after it was applied.
✔ We need to reset the MySQL database "prisma" at "localhost:3306".
Do you want to continue? All data will be lost. … yes

이러한 오류가 발생하였다
새로운 prisma 프로젝트를 로컬에 생성하여 천천히 이유를 찾아보기로 하였다

우선 prisma 에서 얘기하는 기본적인 사용법은

스키마모델정의 -> prisma migrate -> migraions폴더생성

migration 폴더에는 DDL 들이 정의되어있다.

case1

migration 의 기본적은 흐름은 스키마에 모델을 추가하고 npx migrate dev --name [name]
형태로 진행을 한다면 오류를 내지 않는다

migration 전

// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
}

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

migration 후

// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
}

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

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

정상적으로 테이블이 추가됬으며 데이터 또한 유실되지 않음
혹시나해서 이름을 넣지않고 진행해봐도 테이블이 정상적으로 추가됬다.

case2

prisma 공식문서에서 경고하는 방식인데 migration 폴더에 .sql을 수정하는것

CREATE TABLE
    `User_backup2` (
        `id` INTEGER NOT NULL AUTO_INCREMENT,
        `title` VARCHAR(192) NOT NULL,
        `content` VARCHAR(191) NOT NULL,
        `published` BOOLEAN NOT NULL DEFAULT false,
        `authorId` INTEGER NOT NULL,
        PRIMARY KEY (`id`)
    ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

title 컬럼을 VARCHAR(191) -> VARCHAR(192) 로 임의로 수정하고
마이그레이션 진행을 해보았다.

현재 나오는 오류랑 비슷하다 하지만 현재나오는 오류는
상단에 추가 또는 삭제된 컬럼들의 리스트가 나타난다.

어느정도 확신이 가능한것은 migration history 에 문제가 있는것이다

내가 겪고있는 오류가 날만한 상황을 유추해보자
1 .sql 파일 직접수정
2 DB 단에서 컬럼 혹은 테이블을 수정

1번은 테스트를 해봤으나 2번이 느낌상 유력해보여서 테스트 해보았다

깨끗하게 다시 마이그레이션 해준뒤

DB단에서 컬럼을 추가해줬다


정확히 지금과 같은 오류가 나타난다 원인은 찾았으니 prisma 에서 제공하는
솔루션을 찾아보려고 한다.

profile
웹 & 앱개발 기록

0개의 댓글