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

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

Susan Sarandon
Lepaskan: 2024-11-05 00:50:02
asal
839 orang telah melayarinya

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

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

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

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 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan