mysql部分字符存储报错 Incorrect string value问题解决
原因分析
正常情况 utf-8 是一种可变长度的字符集,它的单个字符的长度范围可以在1~4字节之间变化。由于其支持字符范围广并且传输效率高而被广泛使用。虽然在 Windows 中我们默认用的还是 gbk字符集 ,但是在使用浏览器浏览网站的时候大部分网站其实已经在广泛使用 utf-8字符集了。
而在 MySQL 当中由于一些历史原因,其直接支持的 utf-8 格式并非完全版的 utf-8。简单来说MySQL中的utf-8字符集并不完全支持utf-8具体表现就是只能保存最长字节为三字节的字符,而对于四字节编码的字符时,就会无法保存,并且抛出 Incorrect string value异常来声明"你输入了我无法识别的字符"。
为了解决无法保存四字节编码的utf-8字符的问题,MySQL在5.3.3版本时推出了 utf8mb4字符集。因此我们在使用时如果存在目标字段值中有emoji或者生僻字的情况时,最好使用 utf8mb4 字符集建表。
复现
CREATE TABLE tb_description(
id int(11) AUTO_INCREMENT COMMENT '主键',
description varchar(1024) COMMENT '评论',
create_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY(id)
)engine=InnoDB,charset=utf8;INSERT INTO tb_description(description) VALUES("学到了😁"); 
解决办法
CREATE TABLE tb_description(
id int(11) AUTO_INCREMENT COMMENT '主键',
description varchar(1024) COMMENT '评论',
create_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY(id)
) engine=InnoDB,DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;在客户端插入前,设置编码,插入成功
SET NAMES utf8mb4;
INSERT INTO tb_description(description) VALUES("学到了😁"); jdbc连接设置
jdbc.url=jdbc:mysql://xxx:3306/xx?useUnicode=true&characterEncoding=utf8mb4
如果Jfinal
jdbcUrl=jdbc:mysql://127.0.0.1:3306/blog
DruidPlugin 初始化后指定编码
DruidPlugin druidPlugin = getDruidPlugin();
//指定编码为utf8mb4
druidPlugin.setConnectionInitSql("set names utf8mb4");
me.add(druidPlugin);来源
mysql遇到1366: Incorrect string value的正确解决方法_yes1983的博客-CSDN博客
MySQL插入数据 “Incorrect string value“ 错误解析_ghimi的博客-CSDN博客
到此这篇关于mysql部分字符存储报错 Incorrect string value问题解决的文章就介绍到这了,更多相关mysql 字符存储报错内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Mysql 忘记root密码和修改root密码的解决方法(小结)
这篇文章主要介绍了Mysql 忘记root密码和修改root密码的解决方法(小结),非常不错,具有参考借鉴价值,需要的朋友可以参考下2016-12-12
如何区分MySQL的innodb_flush_log_at_trx_commit和sync_binlog
这篇文章主要介绍了如何区分MySQL的innodb_flush_log_at_trx_commit和sync_binlog,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下2021-02-02
Mysql LONGTEXT 类型存储大文件(二进制也可以) (修改+调试+整理)
MySql2.cpp : Defines the entry point for the console application.2009-07-07
MySQL性能分析利器之optimizer_trace使用详解
optimizer_trace是MySQL中一个强大的诊断工具,它能够深入分析查询优化器的决策过程,为开发者提供精准的性能分析能力,这篇文章主要介绍了MySQL性能分析利器之optimizer_trace使用的相关资料,需要的朋友可以参考下2026-01-01
MySQL 5.6.51 解压版(zip版)安装配置图文方法
这两天刚试用了一下MySQL5.6.51,感觉还不错,有兄弟戏称是一个高富帅版本。现将MySQL5.6.51 zip解压版本的安装配置过程记录如下,希望能给需要安装该版本的朋友一点参考作用2015-08-08
MySQL数据恢复工具:ibd2sql离线解析.ibd文件转换为SQL
ibd2sql是纯Python3工具,用于离线解析MySQL InnoDB IBD文件生成SQL语句,支持多版本和复杂结构,可恢复误删数据,优点包括无依赖、灵活输出,但存在性能慢、数据完整性风险及资源消耗大的缺点,适用于数据恢复、迁移和审计场景2025-06-06


最新评论