Przejdź do głównej zawartości

Illegal mix of collations

❌ Błąd

Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_unicode_ci,IMPLICIT) for operation '='

📍 Kontekst

Ten błąd występuje, gdy MySQL próbuje porównać dwa ciągi, które używają różnych porównań (na przykład utf8mb4_general_ci vs. utf8mb4_unicode_ci). Często zdarza się to w skryptach FiveM, gdy zapytania dotyczą danych graczy (np. tablice rejestracyjne, imiona, identyfikatory) przechowywanych z niespójnymi porównaniami.

✅ Rozwiązanie

Istnieją dwa sposoby na naprawienie tego:

  1. Ujednolicenie porównania całej bazy danych (zalecane)

     ALTER DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

    To zapewnia, że wszystkie tabele i zapytania używają tego samego porównania.

  2. Dostosowanie konkretnych tabel lub kolumn

    • Usuń lub zmień dotknięte tabele.
    • Zmodyfikuj schemat SQL, aby używał spójnego porównania (utf8mb4_unicode_ci lub utf8mb4_general_ci).
    • Odtwórz lub przenieś dane.

ℹ️ Dodatkowe informacje

  • Zawsze wykonuj kopię zapasową bazy danych przed wprowadzeniem zmian strukturalnych.
  • Używanie utf8mb4_unicode_ci jest ogólnie preferowane, ponieważ zapewnia lepsze wsparcie dla Unicode.
  • Mieszanie porównań w różnych tabelach może prowadzić do nieprzewidywalnych błędów zapytań.
  • Aby uzyskać więcej informacji na temat porównań MySQL, zapoznaj się z dokumentacją MySQL.