gpt4 book ai didi

mysql - 为什么我不能在这个 mysql 字段中存储 4 字节的表情符号?

转载 作者:行者123 更新时间:2023-12-03 20:43:28 25 4
gpt4 key购买 nike

我有一个数据库,我要求一个表中只有两个字段允许存储 4 字节的表情符号。我这样做了(显然使用正确的表名和列名):

ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
我知道它有效,因为当我这样做时 show create table chatbots_proposalarea;它向我展示了这一点:
CREATE TABLE `chatbots_proposalarea` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) COLLATE utf8mb4_bin NOT NULL,
`proposal` varchar(1500) COLLATE utf8mb4_bin DEFAULT NULL,
`candidate_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `chatbots_proposalare_candidate_id_6465160e_fk_chatbots_` (`candidate_id`),
CONSTRAINT `chatbots_proposalare_candidate_id_6465160e_fk_chatbots_` FOREIGN KEY (`candidate_id`) REFERENCES `chatbots_candidate` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
字段“name”和“proposal”似乎有 uft8mb4_bin 排序规则,并且在运行命令时没有显示错误。但是,当我尝试在那里保存一个值时,例如“Seguridad 🍞”,它给了我错误
ERROR 1366 (HY000): Incorrect string value: '\xF0\x9F\x8D\x9E' for column 'name' at row 1
任何帮助发现我错过了什么将不胜感激。
备注
这是在Django项目上,挂载在Ubuntu服务器上,SQL版本为 mysql Ver 14.14 Distrib 5.7.28, for Linux (x86_64)我不明白为什么这会有所作为,但是当我通过执行直接更新到数据库时会发生同样的情况
UPDATE chatbots_proposalarea SET name='Seguridad 🍞' where id=1;
推荐了一种解决方案,但该解决方案取决于触发器的使用,这就是问题的原因,这不是我的情况。
更新
如果它显示任何重要信息,当我运行 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 | utf8mb4 |
| character_set_system | utf8 |
| collation_connection | utf8mb4_general_ci |
| collation_database | utf8mb4_general_ci |
| collation_server | utf8mb4_general_ci |
+--------------------------+--------------------+
我将这些值更改为与同事在他的一个项目中相同的值,他还需要存储 4 字节的表情符号。

最佳答案

那不是 table 的错;它是连接。就像是:

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
...
'OPTIONS': {
'charset': 'utf8mb4',
'use_unicode': True, },
},
}

关于mysql - 为什么我不能在这个 mysql 字段中存储 4 字节的表情符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66358948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com