Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Membetulkan Ralat 'Campuran Pengumpulan Haram' MySQL?

Bagaimana untuk Membetulkan Ralat 'Campuran Pengumpulan Haram' MySQL?

DDD
Lepaskan: 2025-01-10 19:41:47
asal
385 orang telah melayarinya

How to Fix MySQL's

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>
Salin selepas log masuk

Menjalankan ini mungkin menghasilkan:

<code>Error Number: 1267
Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='</code>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan