2015-05-18 14 views
5

Sto provando a memorizzare emoji nel database nel mio server. Sto usando esempio AWS EC2 come server miei dati del server sono elencati di seguito:Emoji non è memorizzato correttamente in MySQL 5.6 con collation utf8mb4

OS: ubuntu0.14.04.1

MySQL versione: 5.6.19-0ubuntu0.14.04.1 - (Ubuntu)

Database versione client: libmysql - mysqlnd 5.0.11-dev - 20120503

ho creato un test di database e la tabella emoji nel server con SQL seguente:

CREATE DATABASE IF NOT EXISTS `test` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; 
USE `test`; 

CREATE TABLE IF NOT EXISTS `emoji` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `text` varchar(255) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1; 

Quando ho provato ad eseguire il seguente inserto, viene visualizzato un avviso ei dati non vengono memorizzati correttamente:

INSERT INTO `test`.`emoji` (`id` , `text`) VALUES (NULL , ' '); 

Inserita id fila: 3

Attenzione: # 1366 non corretto valore di stringa: ' \ xF0 \ X9F \ x91 \ x86 \ xF0 ...' per la colonna 'testo' alla riga 1

il valore memorizzato nella colonna di testo è: ???? ???? ???? ????

Lo stesso scenario funziona per il mio database locale e i valori sono memorizzati correttamente. Quasi tutte le configurazioni sono simili nel mio locale eccetto il sistema operativo (Windows).

+1

Si prega di fare 'SHOW CREATE TABLE test.emoji \ G' - Voglio vedere se è stato storpiato in qualche modo dopo averlo creato. –

+0

Wat quale prompt hai eseguito il 'INSERT' che sta fallendo? (Il F09F9186 è corretto.) –

+0

CREATE TABLE 'emoji' ( ' id' int (10) unsigned NOT NULL AUTO_INCREMENT, 'Text' varchar (255) NOT NULL, PRIMARY KEY (' id') ) ENGINE = InnoDB AUTO_INCREMENT = 4 DEFAULT CHARSET = utf8mb4 –

risposta

1

Sono stato in grado di ricreare il problema utilizzando SqlWorkbench.

Sei cliente molto probabilmente ha stabilito una connessione al DB il cui set di caratteri non corrisponde al set di caratteri della tabella:

esegue questa istruzione prima di eseguire l'istruzione INSERT per allineare il set di caratteri e collazione della connessione:

SET NAMES utf8mb4 COLLATE utf8mb4_general_ci 

Spero che questo aiuti, i set di caratteri possono essere complicati.

Problemi correlati