Selasa, 14 Januari 2025

error mysql Illegal mix of collations (latin1_general_cs,IMPLICIT) and (latin1_general_ci,IMPLICIT) for operation '='

Tags
Error "Illegal mix of collations" biasanya terjadi di MySQL saat Anda mencoba membandingkan atau mengoperasikan dua kolom atau nilai string yang memiliki collation berbeda. Dalam kasus ini, Anda memiliki konflik antara latin1_general_cs (case-sensitive) dan latin1_general_ci (case-insensitive).
Penyebab

    Collation berbeda antara dua kolom atau nilai yang dibandingkan.
    Collation yang tidak konsisten di dalam database atau query.

Solusi
1. Ubah Collation di Query

Anda dapat menggunakan fungsi COLLATE untuk menyamakan collation secara eksplisit di dalam query.
SELECT * FROM tabel
WHERE kolom1 COLLATE latin1_general_ci = kolom2;

2. Ubah Collation di Struktur Tabel

Jika masalah sering terjadi, pertimbangkan untuk menyamakan collation seluruh kolom yang relevan di tabel:

ALTER TABLE tabel
MODIFY kolom1 VARCHAR(255) COLLATE latin1_general_ci,
MODIFY kolom2 VARCHAR(255) COLLATE latin1_general_ci;

3. Periksa dan Ubah Default Collation Database

Pastikan default collation dari database sesuai kebutuhan Anda:

ALTER DATABASE nama_database
CHARACTER SET latin1
COLLATE latin1_general_ci;

4. Konversi Data Sementara

Jika Anda tidak ingin mengubah struktur tabel atau database, konversi collation secara sementara:

SELECT * FROM tabel
WHERE kolom1 COLLATE latin1_general_ci = 'nilai';

5. Gunakan BINARY untuk Perbandingan Case-Sensitive

Jika Anda memerlukan perbandingan case-sensitive tanpa mengubah collation:

SELECT * FROM tabel
WHERE BINARY kolom1 = 'nilai';

Catatan

    Sebaiknya gunakan collation yang konsisten di seluruh database untuk menghindari konflik di masa depan.
    Jika database Anda baru, pertimbangkan untuk menggunakan utf8_general_ci atau utf8mb4_general_ci, karena lebih modern dan mendukung lebih banyak karakter.
This Is The Newest Post