Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyelesaikan Ralat 'Campuran pengumpulan haram' MySQL?
Menyelesaikan masalah Ralat "Campuran pengumpulan yang tidak sah" dalam MySQL
Apabila menghadapi ralat "Campuran pengumpulan yang tidak sah" dalam MySQL semasa pelaksanaan prosedur tersimpan , adalah bijak untuk menyelidiki punca asas.
Pengumpulan memainkan peranan penting dalam MySQL, menentukan set aksara dan peraturan pengisihan. Ketidakpadanan dalam himpunan antara jadual dan lajur yang dirujuk dalam klausa WHERE boleh membawa kepada ralat ini.
Untuk menyelesaikan isu, nyatakan himpunan dikongsi untuk kedua-dua lajur yang terlibat dalam perbandingan. Klausa COLLATE membenarkan anda untuk mengatasi penyusunan lalai untuk ungkapan tertentu. Contohnya:
WHERE 'A' COLLATE latin1_general_ci = 'A' COLLATE latin1_general_cs
Pertanyaan ini masih akan mencetuskan ralat kerana ia membandingkan rentetan dengan pengumpulan yang berbeza. Sebaliknya, anda harus menyatakan pengumpulan kongsi secara eksplisit:
SELECT * FROM table ORDER BY key COLLATE latin1_general_ci;
Sebagai alternatif, pengendali BINARI boleh digunakan untuk memaksa perbandingan binari, mengabaikan pengumpulan:
SELECT * FROM table WHERE BINARY a = BINARY b;
SELECT * FROM table ORDER BY BINARY a;
Berhati-hati bahawa pemutus lajur untuk perbandingan, seperti dalam kes pengendali BINARI, boleh memberi kesan kepada prestasi pengindeksan. Rujuk jawapan komprehensif eggyal untuk mendapatkan maklumat lanjut tentang pengumpulan MySQL.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'Campuran pengumpulan haram' MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!