2014-09-15 26 views
13

Sto cercando di risolvere un problema di codifica dei caratteri - in precedenza abbiamo avuto il confronto impostato per questo utf8_general_ci colonna che ha causato problemi perché è insensibile accento ..COLLATION 'utf8_general_ci' non è valido per il personaggio SET 'latin1'

Sto cercando di trovare tutte le voci nel database che potrebbero essere state interessate.

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

Tuttavia, questo genera l'errore:

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

  1. Il database è ora definita con "DEFAULT CHARACTER SET utf8"
  2. La tabella è definita con "charset = utf8 "
  3. La colonna" pid "è definita con: SET CARATTERE utf8 COLLATE utf8_bin NOT NULL
  4. La versione server è la versione server: 5.5.37-MariaDB-0ubuntu0.14.04.1 (Ubuntu)

Domanda: Perché mi appare un errore circa latin1 quando latin1 non sembra essere presente ovunque nella definizione tabella/schema?

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

Si prega di pubblicare la tabella 'SHOW CREATE TABLE1' e' SHOW CREATE TABLE table2'. Qual è il set di caratteri della connessione client? Pubblica anche 'MOSTRA VARIABILI LIKE '% char%'' –

+0

Oh, hai 'set nomi utf8', quindi spero' character_set_client' mostrerà 'utf8' –

+0

per favore leggi [MY POST] (http://meta.stackoverflow.com/ a/271056/2733506) su come pubblicare domande buone e utili ... ci sono suggerimenti e strumenti di formattazione collegati per aiutarti a formattare query, tabelle e molto altro! –

risposta

15

In primo luogo l'esecuzione della query

SHOW VARIABLES LIKE '%char%'; 

Hai character_set_server='latin1'

Se è così, entra nella tua file di configurazione, my.cnf e aggiungere o togliere il commento alle righe:

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

Riavvia il server. Sì tardi alla festa, ho appena incontrato lo stesso problema.

+2

Dovrebbe essere 'character-set-server' o' character_set_server'? – user151841

+0

Dovrebbe essere il set di caratteri server –

+0

character_set_server, MySQL 5.5 – KingKari

Problemi correlati