Drizzle <> MySQL

MySQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ํ•จ๊ป˜ Drizzle์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด mysql2 ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค

**๊ณต์‹ ์›น์‚ฌ์ดํŠธ**์— ๋”ฐ๋ฅด๋ฉด, mysql2๋Š” ์„ฑ๋Šฅ์— ์ค‘์ ์„ ๋‘” Node.js์šฉ MySQL ํด๋ผ์ด์–ธํŠธ์ž…๋‹ˆ๋‹ค.

Drizzle ORM์€ drizzle-orm/mysql2 ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด mysql2๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

1๋‹จ๊ณ„ - ํŒจํ‚ค์ง€ ์„ค์น˜

npm
yarn
pnpm
bun
npm i drizzle-orm mysql2
npm i -D drizzle-kit

2๋‹จ๊ณ„ - ๋“œ๋ผ์ด๋ฒ„ ์ดˆ๊ธฐํ™” ๋ฐ ์ฟผ๋ฆฌ ์ž‘์„ฑ

mysql2
mysql with config
import { drizzle } from "drizzle-orm/mysql2";

const db = drizzle(process.env.DATABASE_URL);

const response = await db.select().from(...)

๊ธฐ์กด ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ:

Client connection
Pool connection
import { drizzle } from "drizzle-orm/mysql2";
import mysql from "mysql2/promise";

const connection = await mysql.createConnection({
  host: "host",
  user: "user",
  database: "database",
  ...
});

const db = drizzle({ client: connection });
IMPORTANT

DDL ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๊ณผ ํ•จ๊ป˜ ๋‚ด์žฅ migrate ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ๋‹จ์ผ client ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ฐ•๋ ฅํžˆ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ๋ชฉ์ ์œผ๋กœ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ ์‚ฌํ•ญ์— ๋”ฐ๋ผ client ๋˜๋Š” pool์„ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„๋Š”?