2016-04-20 1 views
2

Je suis en train d'enregistrer des données sur base de données mysql, entrée contient des caractères emoji comme ceci: '\ U0001f60a \ U0001f48d et je reçois cette erreur:Enregistrement des caractères emoji dans la base de données MySQL

1366, "Incorrect string value: '\\xF0\\x9F\\x98\\x8A\\xF0\\x9F...' for column 'caption' at row 1" 

J'ai cherché sur le net et lu beaucoup de réponses incluent ceux-ci: ou ou https://mathiasbynens.be/notes/mysql-utf8mb4#character-sets ou http://www.java2s.com/Tutorial/MySQL/0080__Table/charactersetsystem.htm mais rien n'a fonctionné!

J'ai des problèmes différents:

est d'info mydb ici:

mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%'; 
+--------------------------+--------------------+ 
| Variable_name   | Value    | 
+--------------------------+--------------------+ 
| character_set_client  | utf8mb4   | 
| character_set_connection | utf8mb4   | 
| character_set_database | utf8mb4   | 
| character_set_filesystem | binary    | 
| character_set_results | utf8mb4   | 
| character_set_server  | utf8    | 
| character_set_system  | utf8    | 
| collation_connection  | utf8mb4_general_ci | 
| collation_database  | utf8mb4_general_ci | 
| collation_server   | utf8_general_ci | 
+--------------------------+--------------------+ 
10 rows in set (0.00 sec) 

J'ai essayé de changer character_set_server valeur à utf8mb4 par

mysql>SET character_set_server = utf8mb4 
Query OK, 0 rows affected (0.00 sec) 

Mais quand tout redémarrage mysqld revenir!

Je n'ai pas de fichier /etc/my.cnf aussi, et j'ai édité le fichier /etc/mysql/my.cnf à la place.

Que dois-je faire? Comment puis-je sauvegarder un fichier emoji dans ma base de données?

+0

Eh bien, oui, ces paramètres reviennent. Vous devez définir votre *** encodage de connexion *** chaque fois que vous vous connectez à la base de données. Comment exactement essayez-vous d'insérer quelle valeur exactement? – deceze

+0

Je développe une application Django et utilise python 'django.db.backends.mysql' comme moteur pour me connecter au serveur MySQL. –

+0

Pourriez-vous être en mesure de trouver une solution? –

Répondre

1

ligne 1ère ou 2ème dans le code source (pour avoir littéraux dans le UTF8 code: # - - codage: UTF8 - -

vos colonnes/tables doivent être CHARACTER SET utf8mb4

le paquet python version "MySQL-python" doit être au moins 1.2.5 afin de traiter utf8mb4.

self.query('SET NAMES utf8mb4') peut être nécessaire. besoin

Django client_encoding: 'UTF8' - Je ne sais pas si cela devrait être 'utf8mb4`.

Références:
https://code.djangoproject.com/ticket/18392
http://mysql.rjweb.org/doc.php/charcoll#python

+0

Avertissement. Cela provoquera une erreur sur Windows: https://stackoverflow.com/questions/38813689/cant-initialize-character-set-utf8mb4-with-windows-mysql-python – User