解决由于发布Emoji表情导致的Z-Blog侧栏模块无法更新的问题
话说某一天突然发现本博的侧栏最新留言模块不更新了,百思不得其解,最后还原了前一天的数据备份才解决。
然后今天发现又不更新了,仔细回想在更新与不更新之间做的唯一的操作就是回复了一条留言,留言内容含有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表情后侧栏模块并不会不更新,只是会显示一堆???