Menyelesaikan masalah Ralat "Campuran Pengumpulan Tidak Sah" MySQL
Data data yang besar kadangkala boleh mencetuskan ralat "Campuran pengumpulan haram" MySQL yang mengecewakan. Ini berlaku apabila membandingkan data dengan set aksara dan himpunan yang tidak konsisten.
Masalahnya
Pertimbangkan pertanyaan ini:
<code class="language-sql">SELECT COUNT(*) AS num FROM keywords WHERE campaignId = '12' AND LCASE(keyword) = 'hello again 昔 ã‹ã‚‰ ã‚ã‚‹ å ´æ‰€'</code>
Menjalankan ini mungkin menghasilkan:
<code>Error Number: 1267 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='</code>
Penyelesaian: String Escaping lwn. Perubahan Pengekodan
Terdapat dua pendekatan utama untuk menyelesaikan masalah ini: melarikan diri daripada rentetan yang bermasalah atau mengubah pengekodan pangkalan data dan jadual.
Kaedah 1: Rentetan Melarikan Diri (Pembetulan Sementara)
Melepaskan rentetan boleh mengelakkan ralat buat sementara waktu:
<code class="language-sql">SET collation_connection = 'utf8_general_ci'; SELECT COUNT(*) AS num FROM keywords WHERE campaignId = '12' AND LCASE(keyword) = 'hello again \"昔 ã‹ã‚‰ ã‚ã‚‹ å ´æ‰€\"'</code>
Walau bagaimanapun, ini adalah penyelesaian band-aid dan mungkin menimbulkan masalah masa depan.
Kaedah 2: Mengubah Pengekodan Pangkalan Data dan Jadual (Penyelesaian Kekal)
Untuk pembetulan kekal, standardkan pangkalan data dan jadual anda untuk digunakan utf8_general_ci
:
<code class="language-sql">ALTER DATABASE your_database_name CHARACTER SET utf8 COLLATE utf8_general_ci; ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;</code>
Dengan menyatukan pengumpulan sambungan dan pengekodan pangkalan data/jadual anda kepada utf8_general_ci
, anda memastikan pengendalian data yang konsisten dan menghapuskan ketidakpadanan pengumpulan. Ini adalah pendekatan yang disyorkan.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'Campuran Pengumpulan Haram' MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!