解决由于发布Emoji表情导致的Z-Blog侧栏模块无法更新的问题

技巧3年前 隔壁老李于 2021-04-19 08:49:34 最后编辑

话说某一天突然发现本博的侧栏最新留言模块不更新了,百思不得其解,最后还原了前一天的数据备份才解决。

然后今天发现又不更新了,仔细回想在更新与不更新之间做的唯一的操作就是回复了一条留言,留言内容含有Emoji表情。

于是删除了这条回复,更新一下缓存,侧栏开始正常更新了。

瞬间恍然大悟,因为Emoji表情需要的数据库编码为utf8mb4,而本博客的数据库编码是utf8(utf8mb3)。

于是导致了Emoji表情无法储存。

根据ZB官方文档说明,这是Mysql的一个BUG。

当初因为不能发Emoji表情,我把post文章表及其字段、comment评论表及其字段的排序规则都改为utf8mb4_general_ci。改完后文章和评论都能发Emoji表情了,但是并未修改module表的排序规则。

于是就导致了发布Emoji表情后模块内容不能正确显示。

找到问题根源,解决起来就简单了。

使用phpmyadmin或其它数据库管理工具,找到zbp_module,将其排序规则改为utf8mb4_general_ci。

解决由于发布Emoji表情导致的Z-Blog侧栏模块无法更新的问题  第1张

将zbp_module的mod_Content字段排序规则也改为utf8mb4_general_ci即可。

解决由于发布Emoji表情导致的Z-Blog侧栏模块无法更新的问题  第2张

也可以在更改zbp_module表排序规则时选中:更改所有列排序规则,这样此表下的所有相关字段排序规则都会修改。

解决由于发布Emoji表情导致的Z-Blog侧栏模块无法更新的问题  第3张

解决由于发布Emoji表情导致的Z-Blog侧栏模块无法更新的问题  第4张

看一下侧栏模块,正常了!

解决由于发布Emoji表情导致的Z-Blog侧栏模块无法更新的问题  第5张

补充,不知是否是Mysql版本不同的原因,另一个Mysql版本为5.5的网站发布Emoji表情后侧栏模块并不会不更新,只是会显示一堆???


本文由 @隔壁老李 于 2021-04-16 发布在 野路子博客,如无特别说明,本博文章均为原创,转载请保留出处。
评论 (1)
访客
隔壁老李
🤔留言只是测试一下侧栏模块下😾😿
· 来自山东省青岛市 · 回复
Top