Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Membetulkan Ralat \"Campuran Haram Pengumpulan\" dalam MySQL?

Bagaimana untuk Membetulkan Ralat \"Campuran Haram Pengumpulan\" dalam MySQL?

Susan Sarandon
Susan Sarandonasal
2024-11-05 00:50:02722semak imbas

How to Fix the

Campuran Pengumpulan Haram dalam MySQL: Panduan Terperinci untuk Penyelesaian

Semasa mengerjakan pertanyaan yang melibatkan berbilang jadual, anda mungkin menghadapi ralat "Campuran pengumpulan haram." Isu ini timbul apabila set aksara dan himpunan yang digunakan dalam jadual dan lajur yang terlibat dalam pertanyaan tidak sepadan.

Untuk menyelesaikan ralat ini, anda perlu mengenal pasti lajur tertentu yang menyebabkan ketidakpadanan dan mengubah suai himpunan mereka agar sepadan selebihnya meja. Berikut ialah panduan langkah demi langkah:

Mengenal pasti Lajur Tidak Padan:

  1. Jalankan pertanyaan berikut untuk mencari lajur dengan himpunan bercanggah:
SELECT table_schema, table_name, column_name, character_set_name, collation_name
FROM information_schema.columns
WHERE collation_name = 'latin1_general_ci'
ORDER BY table_schema, table_name, ordinal_position;

Pertanyaan ini akan mengenal pasti semua lajur dalam pangkalan data anda yang menggunakan pengumpulan 'latin1_general_ci'.

Menukar Pengumpulan:

Sebaik sahaja anda mempunyai mengenal pasti lajur yang tidak padan, anda boleh menukar pengumpulannya untuk memadankan jadual yang lain menggunakan arahan ALTER TABLE. Contohnya, untuk menukar lajur 'nama pengguna' dalam jadual 'pengguna' kepada 'latin1_swedish_ci', gunakan arahan berikut:

ALTER TABLE users CONVERT TO CHARACTER SET latin1 COLLATE 'latin1_swedish_ci';

Nota: Set aksara dan himpunan bagi lajur kunci utama mesti sepadan dengan lajur kunci asing dalam jadual berkaitan untuk mengelakkan ralat penyusunan.

Contoh Pertanyaan:

Berikut ialah versi semakan semula pertanyaan asal anda dengan isu pengumpulan telah diselesaikan:

SELECT username, (SUM(rating)/COUNT(*)) as TheAverage, Count(*) as TheCount
FROM ratings WHERE month='Aug'
AND username IN (SELECT username FROM users WHERE gender=1)
GROUP BY username HAVING TheCount > 4
ORDER BY TheAverage DESC, TheCount DESC;

Dengan mengikuti langkah-langkah ini, anda boleh menyelesaikan ralat "Campuran pengumpulan yang tidak sah" dan memastikan pertanyaan anda beroperasi dengan betul dengan set aksara dan himpunan yang konsisten.

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat \"Campuran Haram Pengumpulan\" dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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