2014-09-15 15 views
13

próbuję rozwiązać problem kodowania znaków - poprzednio mieliśmy sortowania ustawiony dla tej kolumny utf8_general_ci co spowodowało problemy, ponieważ jest niewrażliwy akcent ..zestawień „utf8_general_ci” nie jest ważny zestaw znaków „latin1”

Próbuję znaleźć wszystkie wpisy w bazie danych, które mogły zostać naruszone.

set names utf8; select * from table1 t1 join table2 t2 on (t1.pid=t2.pid and t1.id != t2.id) collate utf8_general_ci;

Jednak to generuje błąd:

ERROR 1253 (42000): COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1'

  1. Baza jest teraz zdefiniowany z "domyślnego zestawu znaków UTF-8"
  2. W tabeli zostały zdefiniowane z „charset = utf8 "
  3. Kolumna" pid "jest zdefiniowana za pomocą: CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
  4. wersja serwera jest wersja serwera: 5.5.37-MariaDB-0ubuntu0.14.04.1 (Ubuntu)

Pytanie: Dlaczego otrzymuję błąd o latin1 gdy latin1 nie wydaje się być obecna wszędzie w definicji tabeli/schematu?

MariaDB [(none)]> SHOW VARIABLES LIKE '%char%'; 
+--------------------------+----------------------------+ 
| Variable_name   | Value      | 
+--------------------------+----------------------------+ 
| character_set_client  | utf8      | 
| character_set_connection | utf8      | 
| character_set_database | latin1      | 
| character_set_filesystem | binary      | 
| character_set_results | utf8      | 
| character_set_server  | latin1      | 
| character_set_system  | utf8      | 
| character_sets_dir  | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+ 
8 rows in set (0.00 sec) 

MariaDB [(none)]> SHOW VARIABLES LIKE '%collation%'; 
+----------------------+-------------------+ 
| Variable_name  | Value    | 
+----------------------+-------------------+ 
| collation_connection | utf8_general_ci | 
| collation_database | latin1_swedish_ci | 
| collation_server  | latin1_swedish_ci | 
+----------------------+-------------------+ 
+0

Proszę zaksięgować tabelę "POKAŻ UTWÓRZ STÓŁ table1" i "POKAŻ UTWÓRZ TABELĘ table2". Jaki jest zestaw znaków połączenia klienta? Opublikuj także 'POKAŻ ZMIENNE LIKE '% char%'' –

+0

Och, masz 'set names utf8', więc mam nadzieję, że' character_set_client' wyświetli 'utf8' –

+0

przeczytaj [MÓJ POST] (http://meta.stackoverflow.com/ a/271056/2733506), jak publikować dobre i przydatne pytania ... są dostępne porady i narzędzia do formatowania, które pomagają w formatowaniu zapytań, tabel i wielu innych! –

Odpowiedz

15

pierwsze uruchomienie tej kwerendy

SHOW VARIABLES LIKE '%char%'; 

Masz character_set_server='latin1'

Jeśli tak, przejdź do swojego pliku konfiguracyjnego, my.cnf i dodać lub odkomentuj te linie:

character-set-server = utf8 
collation-server = utf8_general_ci 

Uruchom ponownie serwer. Tak późno na imprezę, właśnie napotkałem ten sam problem.

+2

Czy powinien to być 'serwer-zestawu-znaków' lub serwer_-znak_-setu'? – user151841

+0

Powinien to być serwer z zestawem znaków –

+0

character_set_server, MySQL 5.5 – KingKari

Powiązane problemy