2015-06-05 13 views
5

Il mio database, tabelle, campi utilizzano tutti utf8mb4. Posso memorizzare simboli emoji in alcuni campi. Ora cerco di interrogare come ad esempio:MySql restituisce risultati errati per le stringhe di emoji

SELECT * FROM user WHERE name = ''

Incredibile, il risultato sono i record con i nomi dei campi diversi come ''

Sembra mysql soddisfa le stringhe emoji di loro lunghezze ma non contenuti.

Qualche idea per risolvere questo problema? Grazie molto.

+0

Questo potrebbe aiutarti: http://stackoverflow.com/questions/7814293/how-to-insert-utf-8-mb4-characteremoji-in-ios5-in-mysql –

+0

Grazie Stuart per una risposta molto rapida. Il mio problema è molto diverso. Posso memorizzare, sfogliare ed estrarre molto bene tutte le stringhe con simboli emoji. Unico problema nel confrontarli quando si esegue una query. – Tony

+0

stessa situazione qui. – z33

risposta

0

Qual è l'ordine di confronto sul tuo tavolo? Dal momento che stai usando utf8mb4 dovrebbe essere utf8mb4_unicode_ci. Qualunque altra cosa e si rischia di ottenere il problema che si sta vedendo, peggio ancora si potrebbe ottenere più record di ritorno.

Per impostare l'utilizzo ordine di collazione:

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 
+0

Ho lo stesso problema dell'OP, e ho 'collation_connection',' collation_database', e 'collation_server' impostato su' utf8mb4_unicode_ci'. Le query 'SELECT' sembrano infatti corrispondere solo al numero di emoji, e non al contenuto reale (che è strano, per non dire altro). – ACJ

0

Prova questo:

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; 
1

Appena fatto questo comando al mio tavolo:

ALTER TABLE nometabella CONVERTI a carattere SET utf8mb4 COLLEGA utf8mb4_bin;

questo è tutto. il risultato è corretto allora.

Problemi correlati