在MySQL数据库中保存表情符号

5
我正在尝试将一些数据保存在mysql数据库中,输入包含像这样的表情符号:'\U0001f60a\U0001f48d',但我收到了以下错误:
1366, "Incorrect string value: '\\xF0\\x9F\\x98\\x8A\\xF0\\x9F...' for column 'caption' at row 1"

我在网络上搜索并阅读了很多答案,包括以下内容:MySQL utf8mb4,保存表情符号时出错MySQL utf8mb4,保存表情符号时出错https://mathiasbynens.be/notes/mysql-utf8mb4#character-setshttp://www.java2s.com/Tutorial/MySQL/0080__Table/charactersetsystem.htm,但都没有起作用!!
我有不同的问题:
这是我的数据库信息:
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文件。

我应该怎么办? 如何在我的数据库中保存表情符号文件?


是的,这些设置会恢复默认。每次连接到数据库时,您都需要设置连接编码。您具体是如何尝试插入什么值的? - deceze
我正在开发一个Django应用程序,并使用Python的django.db.backends.mysql作为引擎来连接MySQL服务器。 - Hosein Remezan
你能够找到解决方案吗? - Vahid Najafi
实际上,我无法编辑现有的数据库,但是当我创建一个新的utf8mb4排序规则的数据库时,一切都正常工作。 - Hosein Remezan
1个回答

4

源代码中的第一行或第二行(为使代码文字面量进行utf8编码:# -- coding: utf-8 --

你的列/表需要使用CHARACTER SET utf8mb4

Python包“MySQL-python”的版本至少需要1.2.5才能处理utf8mb4。

self.query('SET NAMES utf8mb4')可能是必要的。

Django需要client_encoding: 'UTF8' -- 我不知道是否应该是'utf8mb4`。

参考资料:
https://code.djangoproject.com/ticket/18392
http://mysql.rjweb.org/doc.php/charcoll#python


警告。这将在Windows上引起错误:https://dev59.com/AJnga4cB1Zd3GeqPbKDl - User

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接