首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未知字符集: utf8mb4

未知字符集: utf8mb4
EN

Database Administration用户
提问于 2022-07-23 00:19:22
回答 1查看 415关注 0票数 1

上下文:我通过Python和mysql.connector模块将查询发送到我的mysql.connector服务器(VER15.1 Demode10.3.34-MariaDB)。(我不知道它在我的列表中是哪一个:mysql-连接器2.2.9 mysql-连接器-python 8.0.29 mysql-连接器-python-rf 2.2.2 )

我第一个问题是这个查询,例如:

代码语言:javascript
复制
INSERT INTO messages(message_id, message, user_id, date_sent, channel_sent, stream_sent) VALUES('1c5e6b29-cd11-4a8b-bd20-583f65b4a130', '', 121797523, FROM_UNIXTIME(1658512097), 24147592, 1539530627)

将返回此错误:

代码语言:javascript
复制
1366 (22007): Incorrect string value: '\xF0\x9F\x99\x83' for column `table_name`.`messages`.`message` at row 1

看了无数个小时后,我发现一个帖子写着这个函数: conn.set_charset_collation(charset=charset,collation=collation)

应该把它修好。所以,在用Python脚本连接到我的数据库并获得我的康涅狄格(用于获取光标的控件)之后,我就这样做了

conn.set_charset_collation(charset="utf8mb4",collation="utf8mb4_bin")

现在我收到一条新的错误消息:unknown encoding: utf8mb4

我还发现另一篇文章说要编辑/etc/mysql/my.cnf,所以我做了,现在看起来如下(但它没有解决这个问题):

代码语言:javascript
复制
[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
max_connections = 500
character-set-client-handshake                  = 0
init_connect                                    = 'SET character_set_system = utf8mb4'
init_connect                                    = 'SET character_set_connection = utf8mb4'
init_connect                                    = 'SET character_set_database = utf8mb4'
init_connect                                    = 'SET character_set_results = utf8mb4'
init_connect                                    = 'SET collation_database = utf8mb4_bin'
init_connect                                    = 'SET collation_connection = utf8mb4_bin'
init_connect                                    = 'SET NAMES utf8mb4'
character_set_client                            = utf8mb4
collation-server                                = utf8mb4_bin

(之后我做了systemctl restart mysqlsystemctl restart mariadb )我会非常感谢任何能帮助修复这个问题的事情。我通常知道我能在寻找几个小时后找到一个解决方案,但在这里我觉得我永远无法解决它。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2022-07-23 01:32:11

我找到了解决办法。在创建游标之后,我必须调用以下函数:

代码语言:javascript
复制
cursor.execute('SET NAMES utf8mb4')
cursor.execute("SET CHARACTER SET utf8mb4")
cursor.execute("SET character_set_connection=utf8mb4")

这很奇怪,因为我认为这些都是通过我在/etc/mysql/my.cnf中添加的内容完成的,但显然不是吗?不管怎么说。我很高兴

它说我只能在两天内把这个作为接受的答案加起来,然后再加。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/314755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档