Nest.js Prisma Mysql 연동방법
2025-02-06
Nestprismadatabasemysql
Prisma
- TypeScript 및 JavaScript를 위한 최신 ORM(Object-Relational Mapping) 라이브러리
1. 설치
$ npm install prisma --save-dev
$ npx prisma
$ npx prisma init
으로 설치 및 초기화합니다.
/prisma/schema.prisma
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
이 생기는데
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
- postgresql을 mysql로 변경합니다.
- 그리고 .env파일의 DATABASE_URL을 다음과 같이 변경합니다.
- DATABASE_URL="mysql://내가설정한데이터베이스호스트:패스워드@127.0.0.1:/db이름?schema=public"
2. prisma generate
/prisma/schema.prisma
model User {
id Int @id @default(autoincrement())
name String @db.VarChar(100)
password String @db.Char(60)
email String @unique @db.VarChar(100)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
- User schema을 만들어줍니다.
- schema 예시
$ npx prisma generate
✔ Installed the @prisma/client and prisma packages in your project
✔ Generated Prisma Client (v6.3.1) to ./node_modules/@prisma/client in 29ms
Start by importing your Prisma Client (See: https://pris.ly/d/importing-client)
Tip: Want real-time updates to your database without manual polling? Discover how with Pulse: https://pris.ly/tip-0-pulse
그럼 @prisma/client가 패키지로 설치됩니다.
2. prisma migrate
$ npx prisma migrate dev
MySQL database new-project created at 127.0.0.1
✔ Enter a name for the new migration: …
Applying migration `20250206024341_`
The following migration(s) have been created and applied from new schema changes:
migrations/
└─ 20250206024341_/
└─ migration.sql
Your database is now in sync with your schema.
✔ Generated Prisma Client (v6.3.1) to ./node_modules/@prisma/client in 19ms
✨ Done in 5.06s.
- 이후 prisma/migrations 폴더 안에 날짜로 된 폴더를 눌러보시면
-- CreateTable
CREATE TABLE `User` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`name` VARCHAR(100) NOT NULL,
`password` CHAR(60) NOT NULL,
`email` VARCHAR(100) NOT NULL,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
UNIQUE INDEX `User_username_key`(`username`),
UNIQUE INDEX `User_email_key`(`email`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
이런 sql파일이 생성됩니다.