2016-04-20 3 views
2

Я пытаюсь сохранить некоторые данные о MySQL базы данных, ввод содержит Emoji символы, как это: «\ U0001f60a \ U0001f48d», и я получаю эту ошибку:Сохранение Emoji символов в базе данных MySQL

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

Я искал в сети и читал много ответов: или или https://mathiasbynens.be/notes/mysql-utf8mb4#character-sets или http://www.java2s.com/Tutorial/MySQL/0080__Table/charactersetsystem.htm, но ничего не работало !!

У меня есть разные проблемы:

здесь MYDB информация:

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) 

Я попытался изменить character_set_server значение utf8mb4 по

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

Но когда рестарт mysqld все вернется!

У меня также нет файла /etc/my.cnf, и я отредактировал файл /etc/mysql/my.cnf.

Что мне делать? Как сохранить файл emoji в моей базе?

+0

Ну да, эти параметры возвращаются. Вы должны установить *** *** кодировку *** всякий раз, когда вы подключаетесь к базе данных, как само собой разумеющееся. Как именно вы пытаетесь точно вставить какое значение? – deceze

+0

Я разрабатываю приложение Django и использую python 'django.db.backends.mysql' в качестве механизма для подключения к серверу MySQL. –

+0

Не могли бы вы найти решение? –

ответ

1

первой или второй линии в исходном коде (иметь литералов в коде utf8 кодировке: # - - кодирование: utf8 - -

Ваши колонки/таблицы должны быть CHARACTER SET utf8mb4

пакет питон «MySQL-питон» версия должна быть, по крайней мере 1.2.5 для того, чтобы справиться с utf8mb4.

self.query('SET NAMES utf8mb4') может быть необходимым.

Джанго нуждается client_encoding: 'UTF8' - Я не знаю, должно ли это быть «utf8mb4».

Ссылки:
https://code.djangoproject.com/ticket/18392
http://mysql.rjweb.org/doc.php/charcoll#python

+0

Предупреждение. Это приведет к ошибке в Windows: https://stackoverflow.com/questions/38813689/cant-initialize-character-set-utf8mb4-with-windows-mysql-python – User

Смежные вопросы