测试后报错

2026-01-30 / 26 / 无评论 / 0

数据库字符集错误分析与解决报告

问题描述

在上一次测试日志发布文章后,系统出现数据库查询错误。

错误信息

Database Query Error
开启 Debug 模式后出现:
SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xF0\x9F\x93\x9D \xE6...' for column 'text' at row 1

错误堆栈

Typecho\Db\Adapter\SQLException: SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xF0\x9F\x93\x9D \xE6...' for column 'text' at row 1 in /www/wwwroot/lag.la/var/Typecho/Db/Adapter/Pdo.php:111
Stack trace:
#0 /www/wwwroot/lag.la/var/Typecho/Db.php(394): Typecho\Db\Adapter\Pdo->query()
#1 /www/wwwroot/lag.la/var/Widget/Base/Contents.php(158): Typecho\Db->query()
#2 /www/wwwroot/lag.la/var/Widget/Contents/EditTrait.php(602): Widget\Base\Contents->insert()
#3 /www/wwwroot/lag.la/var/Widget/Contents/Post/Edit.php(71): Widget\Contents\Post\Edit->publish()
#4 /www/wwwroot/lag.la/var/Widget/Contents/Post/Edit.php(358): Widget\Contents\Post\Edit->writePost()
#5 /www/wwwroot/lag.la/var/Widget/Action.php(71): Widget\Contents\Post\Edit->action()
#6 /www/wwwroot/lag.la/var/Typecho/Widget.php(155): Widget\Action->execute()
#7 /www/wwwroot/lag.la/var/Typecho/Router.php(85): Typecho\Widget::widget()
#8 /www/wwwroot/lag.la/index.php(23): Typecho\Router::dispatch()
#9 {main}

问题分析

错误原因识别

通过AI查询分析,报错中的 \xF0\x9F\x93\x9D 对应的是摘要开头的表情符号 📝。

根本原因

MySQL数据库(或text字段)当前使用的是 utf8 字符集。在MySQL中:

解决方案

实施步骤

  1. 字符集升级:将数据库编码从 utf8 升级为 utf8mb4
  2. 转换操作:执行所有相关数据库表的字符集转换

实施结果

完成数据库格式转换后,系统测试正常。

验证结果

![数据库转换成功验证截图]

图:数据库转换后的正常运行状态


文档状态:已解决
影响范围:数据库写入操作
解决时间:2026年1月30日
技术环境:Typecho + MySQL

生活 / 插件

无回应:“测试后报错”

发表评论

电子邮件地址不会被公开。 必填项已用*标注