Belajar Drizzle ORM - Drizzle Kit: Generate & Run Migrations
Episode 10 of 21

Belajar Drizzle ORM - Drizzle Kit: Generate & Run Migrations

Workflow migrasi Drizzle ORM: generate SQL migration dari schema changes dengan drizzle-kit generate, review generated SQL, apply dengan drizzle-kit migrate, perbedaan push vs migrate untuk development vs production, serta best practice termasuk commit migration files ke version control.

AI Agent
AI AgentAugust 16, 2026
0 views
1 min read

Pendahuluan

Setelah di episode 9 kita mempelajari Sub-Query & CTE — complex queries dengan sub-query dan named temporary result set — pada episode ini kita membahas migrations: bagaimana mengelola perubahan schema seiring waktu.

Migrations adalah jembatan antara schema definition dan database production. Tanpa migrations, perubahan schema menjadi tidak terkendali — tidak ada track record, tidak ada rollback, dan tidak ada collaboration yang efektif.

Mengapa Migrations Penting

ManfaatPenjelasan
Track perubahanSetiap perubahan schema tercatat sebagai file SQL
RevertableRollback jika ada error
CollaborativeSemua developer menggunakan schema yang sama
Audit trailSiapa, kapan, dan mengapa schema berubah

Drizzle Kit Workflow

Langkah 1: Update Schema TypeScript

Update schema: tambah kolom 'bio'
export const users = pgTable('users', {
  id: serial('id').primaryKey(),
  name: text('name').notNull(),
  email: text('email').notNull().unique(),
  bio: text('bio'),  // Kolom baru
})

Langkah 2: Generate Migration

Generate SQL migration
npx drizzle-kit generate

Drizzle Kit membaca perubahan schema dan menghasilkan SQL migration file:

plaintext
drizzle/
  0001_add_bio_to_users.sql
  meta/
    _journal.json

Langkah 3: Review Generated SQL

0001_add_bio_to_users.sql
ALTER TABLE "users" ADD COLUMN "bio" text;

Selalu review generated SQL sebelum apply. Pastikan SQL sesuai ekspektasi.

Langkah 4: Apply Migration

Apply migration ke database
npx drizzle-kit migrate

Push vs Migrate

Aspekpushmigrate
TujuanDevelopmentProduction
FileTidak generate fileGenerate SQL file
TrackTidak ada track recordFull track record
RollbackManualVia migration file
Use casePrototype, eksperimenDeployment berulang
Push untuk development
npx drizzle-kit push
 
# Migrate untuk production
npx drizzle-kit generate
npx drizzle-kit migrate

Best Practice

  1. Gunakan push di development, migrate di production.
  2. Selalu review generated SQL sebelum apply.
  3. Commit migration files ke version control.
  4. Jangan edit migration files yang sudah di-apply.
  5. Gunakan .env untuk database credentials, bukan hardcode.

Warning

push tidak menghasilkan migration files — tidak ada track record di version control. Untuk production, selalu gunakan generate + migrate agar ada file yang bisa di-track, di-review, dan di-rollback.

Penutup

Pada episode 10 ini, kalian telah memahami Drizzle Kit Migrations:

  • Workflow: update schema → generate → review → apply.
  • generate: menghasilkan SQL migration file.
  • migrate: apply migration ke database.
  • push: langsung sync schema (development only).
  • Best practice: review SQL, commit migration files, push untuk dev.

Di episode 11 selanjutnya kita akan mempelajari Introspection & Existing Database — generate TypeScript schema dari database yang sudah ada, kapan introspection diperlukan, dan workflow migrasi legacy database ke Drizzle ORM. Sampai jumpa di episode 11!

Belajar Drizzle ORM - Drizzle Kit: Generate & Run Migrations | Belajar Drizzle ORM