Saya telah menghabiskan setengah hari mencari jawaban atas kesalahan "campuran koleksi ilegal" yang ditakuti. Saya menemukan bahwa beberapa kolom dalam basis data saya tidak disusun secara khusus utf8_unicode_ci . Tampaknya mysql secara implisit menyusun kolom-kolom ini utf8_general_ci .
Secara khusus, menjalankan kueri 'SHOW CREATE TABLE table1' menghasilkan sesuatu seperti berikut:
| tabel1 | BUAT TABEL table1
(id
int(11) NOT NULL,col1
varchar(4) SET KARAKTER utf8 NOT NULL,col2
int(11) NOT NULL,PRIMARY KEY (photo_id
,tag
)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |
Perhatikan baris 'col1' varchar(4) CHARACTER SET utf8 NOT NULL tidak memiliki susunan yang ditentukan. Saya kemudian menjalankan kueri berikut:
ALTER TABLE table1 CHANGE col1 col1 VARCHAR(4) SET KARAKTER utf8COLLATE utf8_unicode_ci NOT NULL;
Ini memecahkan kesalahan "Campuran koleksi ilegal" saya. Semoga ini bisa membantu orang lain di luar sana.