MySQL
New database
Meet Drizzle
Get started
Drizzleμ MySQL μμνκΈ°
This guide assumes familiarity with:
Drizzleλ₯Ό MySQL λ°μ΄ν°λ² μ΄μ€μ ν¨κ» μ¬μ©νλ €λ©΄ mysql2
λλΌμ΄λ²λ₯Ό μ¬μ©ν΄μΌ ν©λλ€.
**곡μ μΉμ¬μ΄νΈ**μ λ°λ₯΄λ©΄, mysql2
λ μ±λ₯μ μ΄μ μ λ§μΆ Node.jsμ© MySQL ν΄λΌμ΄μΈνΈμ
λλ€.
Drizzle ORMμ drizzle-orm/mysql2
ν¨ν€μ§λ₯Ό ν΅ν΄ mysql2
λ₯Ό κΈ°λ³Έμ μΌλ‘ μ§μν©λλ€.
κΈ°λ³Έ νμΌ κ΅¬μ‘°
μ΄ νλ‘μ νΈμ κΈ°λ³Έ νμΌ κ΅¬μ‘°μ
λλ€. src/db
λλ ν 리 μμλ schema.ts
νμΌμ ν
μ΄λΈ μ μκ° μμ΅λλ€. drizzle
ν΄λμλ SQL λ§μ΄κ·Έλ μ΄μ
νμΌκ³Ό μ€λ
μ·μ΄ μμ΅λλ€.
1λ¨κ³ - mysql2 ν¨ν€μ§ μ€μΉνκΈ°
2λ¨κ³ - μ°κ²° λ³μ μ€μ νκΈ°
νλ‘μ νΈ λ£¨νΈ λλ ν 리μ .env
νμΌμ μμ±νκ³ λ°μ΄ν°λ² μ΄μ€ μ°κ²° λ³μλ₯Ό μΆκ°νμΈμ:
ν
μμ§ MySQL λ°μ΄ν°λ² μ΄μ€κ° μκ³ ν
μ€νΈμ©μΌλ‘ νλλ₯Ό λ§λ€κ³ μΆλ€λ©΄, Dockerμμ MySQLμ μ€μ νλ λ°©λ²μ λν κ°μ΄λλ₯Ό μ°Έκ³ νμΈμ.
Dockerμμ MySQL μ€μ κ°μ΄λλ μ¬κΈ°μμ νμΈν μ μμ΅λλ€. κ°μ΄λλ₯Ό λ°λΌ μ€μ ν ν, λ°μ΄ν°λ² μ΄μ€ URLμ μμ±νκ³ (κ°μ΄λμ μ€λͺ
λμ΄ μμ) λ€μ λ¨κ³λ₯Ό μ§ννμΈμ.
3λ¨κ³ - Drizzle ORMμ λ°μ΄ν°λ² μ΄μ€μ μ°κ²°νκΈ°
src/db
λλ ν 리μ index.ts
νμΌμ μμ±νκ³ μ°κ²°μ μ΄κΈ°ννμΈμ:
mysql2
mysql2 with config
your mysql2 driver
IMPORTANT
DDL λ§μ΄κ·Έλ μ΄μ
κ³Ό ν¨κ» μ 곡λλ λ΄μ₯ migrate
ν¨μλ₯Ό μ¬μ©ν λλ λ¨μΌ client
μ°κ²°μ μ¬μ©νλ κ²μ κ°λ ₯ν κΆμ₯ν©λλ€.
쿼리 λͺ©μ μ κ²½μ°, λΉμ¦λμ€ μꡬμ λ°λΌ client
λλ pool
μ μμ λ‘κ² μ¬μ©νμΈμ.
4λ¨κ³ - ν
μ΄λΈ μμ±
src/db
λλ ν 리μ schema.ts
νμΌμ μμ±νκ³ ν
μ΄λΈμ μ μΈν΄ λ³΄κ² μ΅λλ€.
5λ¨κ³ - Drizzle μ€μ νμΌ κ΅¬μ±
Drizzle μ€μ νμΌ - Drizzle Kitμμ μ¬μ©νλ μ€μ νμΌλ‘, λ°μ΄ν°λ² μ΄μ€ μ°κ²° μ 보, λ§μ΄κ·Έλ μ΄μ
ν΄λ, μ€ν€λ§ νμΌ λ± λͺ¨λ μ 보λ₯Ό ν¬ν¨ν©λλ€.
νλ‘μ νΈ λ£¨νΈμ drizzle.config.ts
νμΌμ μμ±νκ³ λ€μ λ΄μ©μ μΆκ°νμΈμ:
6λ¨κ³ - λ°μ΄ν°λ² μ΄μ€μ λ³κ²½ μ¬ν μ μ©νκΈ°
drizzle-kit push
컀맨λλ₯Ό μ¬μ©νλ©΄ λ°μ΄ν°λ² μ΄μ€μ μ§μ λ³κ²½ μ¬νμ μ μ©ν μ μμ΅λλ€. μ΄ λ°©λ²μ λ‘컬 κ°λ° νκ²½μμ μλ‘μ΄ μ€ν€λ§ λμμΈμ΄λ μμ μ¬νμ λΉ λ₯΄κ² ν
μ€νΈν λ μ μ©ν©λλ€. λ§μ΄κ·Έλ μ΄μ
νμΌμ κ΄λ¦¬ν νμ μμ΄ λΉ λ₯΄κ² λ°λ³΅ μμ
μ μ§νν μ μμ΅λλ€:
push
컀맨λμ λν΄ λ μμλ³΄λ €λ©΄ λ¬Έμλ₯Ό μ°Έκ³ νμΈμ.
ν
λλ drizzle-kit generate
컀맨λλ‘ λ§μ΄κ·Έλ μ΄μ
μ μμ±ν ν, drizzle-kit migrate
컀맨λλ‘ μ μ©ν μλ μμ΅λλ€:
λ§μ΄κ·Έλ μ΄μ
μμ±:
λ§μ΄κ·Έλ μ΄μ
μ μ©:
λ§μ΄κ·Έλ μ΄μ
νλ‘μΈμ€μ λν΄ λ μμλ³΄λ €λ©΄ λ¬Έμλ₯Ό μ°Έκ³ νμΈμ.
7λ¨κ³ - λ°μ΄ν°λ² μ΄μ€ μλ λ° μΏΌλ¦¬
src/index.ts
νμΌμ μ¬μ©μ μμ±, μ‘°ν, μμ , μμ μΏΌλ¦¬λ‘ μ
λ°μ΄νΈν΄ λ³΄κ² μ΅λλ€.
8λ¨κ³ - index.ts νμΌ μ€ννκΈ°
TypeScript νμΌμ μ€ννλ λ°©λ²μ μ¬λ¬ κ°μ§κ° μμ§λ§, μ¬κΈ°μλ tsx
λ₯Ό μ¬μ©νλ λ°©λ²μ μ΄ν΄λ³΄κ² μ΅λλ€.
μ΄λ―Έ tsx
λ₯Ό μ€μΉνμΌλ―λ‘, μ΄μ 쿼리λ₯Ό μ€νν μ μμ΅λλ€.
index.ts
μ€ν¬λ¦½νΈ μ€ννκΈ°
ν
TypeScript νμΌμ μ€νν λ bun
μ μ¬μ©νλ κ²μ μΆμ²ν©λλ€. bun
μ μ¬μ©νλ©΄ νλ‘μ νΈκ° CommonJS(CJS), ECMAScript Modules(ESM) λλ λ€λ₯Έ λͺ¨λ νμμΌλ‘ ꡬμ±λμ΄ μλλΌλ μΆκ° μ€μ μμ΄ μ€ν¬λ¦½νΈλ₯Ό μ€νν μ μμ΅λλ€. bun
μΌλ‘ μ€ν¬λ¦½νΈλ₯Ό μ€ννλ €λ©΄ λ€μ λͺ
λ Ήμ΄λ₯Ό μ¬μ©νμΈμ:
λ§μ½ bun
μ΄ μ€μΉλμ΄ μμ§ μλ€λ©΄, Bun μ€μΉ λ¬Έμλ₯Ό μ°Έκ³ νμΈμ.