刚刚我在写了一篇文章,然后刚想上传时,网站给我报了个
Database Query Error
的错误。
这啥,我的文章还没保存,就直接报错了,然后果断点下了后退,顺利将没有保存的文章复制了出来。本以为是网站防火墙的问题,结果发现,不是,这个就奇怪了。。。。
通过分析,发现问题所在:只要文章里有Emoji,就会在上传时报错,将Emoji删除,问题消失。于是将问题定位在了Emoji上。
这都0202年了,Emoji都不能有?然后就通过搜素引擎,发现其他朋友的博客也曾经存在这种情况。
为什么会出现这样的情况呢?
1、刚才的操作是发布了Emoji表情,emoji 是 4 个字节;
2、Typecho的数据库选用了 UTF-8 的编码,在 MySQL 中,UTF-8 只支持最多 3 个字节;
因此,需要对数据库进行修改。
修改数据库 charset 为 utfmd4:
alter table typecho_comments convert to character set utf8mb4 collate utf8mb4_general_ci;
alter table typecho_contents convert to character set utf8mb4 collate utf8mb4_general_ci;
alter table typecho_fields convert to character set utf8mb4 collate utf8mb4_general_ci;
alter table typecho_metas convert to character set utf8mb4 collate utf8mb4_general_ci;
alter table typecho_options convert to character set utf8mb4 collate utf8mb4_general_ci;
alter table typecho_relationships convert to character set utf8mb4 collate utf8mb4_general_ci;
alter table typecho_users convert to character set utf8mb4 collate utf8mb4_general_ci;
在修改完后,需要对Typecho 配置文件 config.inc.php 中数据库定义参数的charset进行修改:
'charset' => 'utf8mb4',
进行测试,OK了 ???
参考:
https://www.lanka.cn/Typecho-6_3759.html
https://iao.su/2892/
这里不能写小纸条呢~