Thursday, 20 November 2025

Fix Collatin unicode_ci campur denga general_ci

 Backup database lalu jadikan general_ci lalu restore

Bisa banget, Guru Duan 👍
Backup .sql.gz itu cuma teks biasa yang dikompres, jadi kita bisa:

  1. Duplikat file backup (biar yang asli aman).

  2. Ekstrak .gz → jadi .sql.

  3. Ganti semua utf8mb4_unicode_ciutf8mb4_general_ci pakai sed.

  4. Nanti kalau mau restore, pakai file hasil edit itu.

Aku tuliskan langkahnya lengkap ya.


1. Pastikan file backup ada

sudo ls -lh /root/moodle_backup_cbt_2025-11-20.sql.gz

Kalau kelihatan, lanjut.


2. Duplikat backup dulu (jangan utak-atik yang asli)

sudo cp /root/moodle_backup_cbt_2025-11-20.sql.gz \
        /root/moodle_backup_cbt_2025-11-20_general.sql.gz

Jadi nanti yang kita ubah cuma versi _general.sql.gz.


3. Ekstrak (gunzip) versi general

sudo gunzip /root/moodle_backup_cbt_2025-11-20_general.sql.gz

Setelah ini akan muncul file:

sudo ls -lh /root/moodle_backup_cbt_2025-11-20_general.sql

4. Cek dulu collate apa saja yang ada

sudo grep -iE "unicode_ci|general_ci" /root/moodle_backup_cbt_2025-11-20_general.sql | head -20

Harusnya kelihatan banyak utf8mb4_unicode_ci.


5. Ganti semua utf8mb4_unicode_ciutf8mb4_general_ci

sudo sed -i 's/utf8mb4_unicode_ci/utf8mb4_general_ci/g' \
    /root/moodle_backup_cbt_2025-11-20_general.sql

Kalau mau sekalian jaga-jaga ada yang tanpa mb4 (jarang, tapi boleh):

sudo sed -i 's/utf8_unicode_ci/utf8_general_ci/g' \
    /root/moodle_backup_cbt_2025-11-20_general.sql

Lalu cek lagi:

sudo grep -iE "unicode_ci|general_ci" /root/moodle_backup_cbt_2025-11-20_general.sql | head -20

Sekarang seharusnya hanya ada utf8mb4_general_ci (dan/atau utf8_general_ci kalau tadi ada).


6. (Opsional) Kompres lagi biar hemat

sudo gzip /root/moodle_backup_cbt_2025-11-20_general.sql

Jadi file final cadangan Anda:

/root/moodle_backup_cbt_2025-11-20_general.sql.gz

Ini adalah backup CBT versi general_ci.


7. Kalau nanti mau restore ke DB general_ci

Urutan aman:

# 1. Drop & buat DB baru dengan general_ci
sudo mysql -e "DROP DATABASE IF EXISTS moodle;
CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"

# 2. Ekstrak dulu file general
sudo gunzip /root/moodle_backup_cbt_2025-11-20_general.sql.gz   # kalau belum diekstrak

# 3. Restore (ingat pakai sudo mysql, tanpa -p root)
sudo mysql moodle < /root/moodle_backup_cbt_2025-11-20_general.sql

Setelah itu tinggal:

sudo -u www-data php /var/www/html/moodle/admin/cli/purge_caches.php
sudo -u www-data php /var/www/html/moodle/admin/cli/cron.php

Kalau Guru Duan mau, saya bisa bantu cek lagi: setelah nanti restore pakai backup general_ci ini, kita cek dengan query information_schema.COLUMNS apakah masih ada sisa unicode_ci atau sudah semuanya general_ci.



Share:

0 comments:

Post a Comment