最近在新建mysql数据库时,遇到一个字符集编码冲突问题,因为插入数据有一个罕见汉字,导致在执行数据插入更新时一直报下面错误:
lingtuo-ai> SELECT * FROM qa_text WHERE question = "𧿹外翻如何通过康复训练治疗?"
[2023-10-26 15:09:08] [HY000][1267] Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE) for operation '='
[2023-10-26 15:09:08] [HY000][1267] Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE) for operation '='
# 显示表结构
show create table dingxiang_qa_text;
# 输出结果
CREATE TABLE `qa_text` (
`idx` int(11) NOT NULL COMMENT '问题id',
`dis_id` int(11) DEFAULT NULL COMMENT '疾病id',
`dis_name` varchar(100) DEFAULT NULL COMMENT '疾病名称',
`classify` varchar(30) DEFAULT NULL COMMENT '疾病问题类型',
`key_id` int(11) DEFAULT NULL COMMENT '问题类别序号',
`question` varchar(255) NOT NULL COMMENT '疾病问题',
`answer` text COMMENT '疾病问题回答',
`source_db` varchar(100) DEFAULT NULL COMMENT '数据来源',
`update_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`idx`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
#修改表的字符编码,使其与数据库的字符编码保持一致
alter table dingxiang_qa_text default character set utf8mb4 collate=utf8mb4_unicode_ci;
之前执行了上面的第二条指令,发现控制台还是报字符编码冲突错误,后来才明白是mysql数据库创建时指定的编码与创建表时默认的编码不一致 (如下图),才出现上述错误问题;

博主新建MySQL数据库时遇到字符集编码冲突问题,插入含罕见汉字的数据时,执行插入更新操作报错。经排查,发现是数据库创建时指定的编码与创建表时默认的编码不一致导致。
1860

被折叠的 条评论
为什么被折叠?



