mysql:报错Incorrect string value:’\xF0\x9F\x94\xA6\xF0\x9F…’

一,报错信息:

1,报错:

Incorrect string value: '\xF0\x9F\x94\xA6\xF0\x9F...' for column 'content' at row 1

报错的原因:

字符串中包含了emoji表情:

如:

🔦💡🕯️

💡🕯️🔦

2,运行环境:

mysql 8.0.x

php 7.4.x

数据表的collation: utf8mb4_0900_ai_ci

这些都是支持emoji的

按理来说不应该出现报错

二,解决:

检查所用的php框架,

使用了一个封装mysqli的orm类,

找到其连接数据库的代码:

1
2
3
4
5
6
7
$mysqli = new mysqli($host,$username,$password,$data_base);
        if (mysqli_connect_errno()) {
            printf("Connect failed: %s\n", mysqli_connect_error());
            exit();
        }
        $mysqli->set_charset('utf8');
        return $mysqli;

如上,把设置字符集修改为utf8mb4,

1
$mysqli->set_charset('utf8mb4');

然后问题解决

这个其实就是php向mysql数据库执行 ‘set names utf8mb4

旧代码中只写了utf8,所以不支持emoji

说明:刘宏缔的架构森林—专注it技术的博客,
网站:https://blog.imgtouch.com
原文: https://blog.imgtouch.com/index.php/2023/06/18/mysql-bao-cuo-incorrect-string-value-xf0-x9f-x94-xa6-xf0-x9f/
代码: https://github.com/liuhongdi/ 或 https://gitee.com/liuhongdi
说明:作者:刘宏缔 邮箱: 371125307@qq.com

三,查看mysql的版本:

[root@img mysql]# /usr/sbin/mysqld -V
/usr/sbin/mysqld  Ver 8.0.33 for Linux on x86_64 (MySQL Community Server - GPL)
posted @   刘宏缔的架构森林  阅读(560)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2022-06-18 vue.js3: 自定义video垂直可拖动的进度条(vue@3.2.36)
2022-06-18 vue.js3: 自定义video可拖动的进度条(vue@3.2.36)
2020-06-18 kubernetes:用kubeadm管理token(kubernetes 1.18.3)
点击右上角即可分享
微信分享提示