迁移博客后发现修改文章就会报错,摸不到头脑
I
具体报错信息如下
database query error
查找很多资料后也没有解决,偶然发现若是去掉内容中的 Emoji
表情即可成功提交,加入表情就会报错。
打开 Typecho 的调试模式:(在 config.inc.php
里加入)
define('__TYPECHO_DEBUG__', true);
然后查看日志即可发现大量报错
Incorrect string value: '\xF0\x9F\x91\x8F\x0D\x0A...' for column 'text' at row 1
先进入数据库:
[root@domain ~]# mysql -uroot -p
在数据库中查看数据库编码:
show databases;
use typecho;
show variables like '%char%';
查询资料后发现 utf-8
并不支持 Emoji
。
小贴士:要支持Emoji
表情,需使用utf8mb4
编码来支持,utf8mb4
是utf-8
的补充集,完全兼容utf-8
,无需担心兼容问题。
II
使用以下命令修改数据库编码(需先切换至对应的数据库)
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
的数据库设置即可。
vim config.inc.php
将'charset' => 'utf8'
替换为 'charset' => 'utf8mb4'
即可。
附录
参考链接
本文由 柒 创作,采用 知识共享署名4.0
国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2018-07-07 21:20 PM