방명록
- [Next.js] prisma를 이용해 MySQL에 저장한 데이터의 시간이 9시간 전인 경우?!2024년 01월 18일 16시 45분 30초에 업로드 된 글입니다.작성자: DandyNow728x90반응형
1. 왜 데이터 생성, 수정 시간이 9시간 전이지?!
Next.js에서 MySQL을 이용해 데이터 영속성 관리를 하고 있다. 이때 prisma ORM을 사용하였는데 MySQL의 시간(time_zone)은 'Asia/Seoul'인데 9시간 전인 UTC로 데이터가 저장되는 현상을 발견했다. 살펴보니-글을 쓰는 시점인 2024년 1월 18일 까지도-prisma의 경우 local time을 지원하지 않는다고 한다.
2. dbgenerated()를 이용해 DB의 시간을 저장
Prisma Schema를 작성할 때 default values에 dbgenerated()를 이용하여 DB level에서 시간 정보를 처리하도록 하면 된다. 작성 예는 아래와 같다.
model Example { create_at DateTime @default(dbgenerated("NOW()")) @db.DateTime update_at DateTime @default(dbgenerated("NOW() ON UPDATE NOW()")) @db.DateTime }
다음과 같이 작성해도 된다.
model Example { created_at DateTime @default(dbgenerated("CURRENT_TIMESTAMP(6)")) @db.DateTime(6) updated_at DateTime @default(dbgenerated("CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6)")) @db.DateTime(6) }
6의 의미는 시간의 소수점 자릿수를 말하며, 숫자가 클수록 정밀하다.
- CURRENT_TIMESTAMP(0): 초를 나타냄
- CURRENT_TIMESTAMP(3): 밀리초를 나타냄
- CURRENT_TIMESTAMP(6): 마이크로초를 나타냄
공식 문서 참조
https://www.prisma.io/docs/orm/reference/prisma-schema-reference#dbgenerated728x90반응형'언어·프레임워크 > Next.js' 카테고리의 다른 글
[Next.js] 인프런 강의 "Next.js 필수 개발 가이드 3시간 완성!" 정리(섹션 0: 기초) (0) 2024.02.04 [Next.js] 인프런 강의 "Next + React Query로 SNS 서비스 만들기" 정리 (0) 2024.01.21 [Next.js] 업로드 이미지 로드 안되는 문제 (0) 2024.01.03 [Next.js] 동일한 GLTF 모델을 2번 이상 렌더링하기(react-three-fiber/drei/Three.js) (0) 2023.12.28 [Next.js] App Router 프로젝트, VSCODE에서 라우터 한눈에 보기 (0) 2023.12.28 다음글이 없습니다.이전글이 없습니다.댓글