邮件提醒博客炸掉,看了后台报错,原因是
sqlite3.DatabaseError: database disk image is malformed

查了下大概原因就是文件损坏,而且不巧的是,网上的大家都可以通过导出备份再还原备份来解决,而我这个是整个文件都炸掉了。
看了下几个表,posts几乎全军覆没,不过别的表倒还好。然而posts大概是博客最重要的部分了。
幸好一周前有一次备份还在,因此回退到了一周前的数据库。再通过百度快照和Google快照恢复了丢失的文章内容。

在修复过程中,还意外发现有几条新评论没有成功发送邮件,在本地执行了下,发现是
ValueError: server_hostname cannot be an empty string or start with a leading dot.

而这个问题貌似是Python 3.7的锅,因为我本地Python升级到了3.7
修复办法就是在初始化时就指明host

然而线上是3.6,不应该是这个问题,因此只能去线上环境测试了。
然后就有一个很正常的不正常的现象了,Python输出的中文,是\uxxxxx这种格式。
原则上而言Python明明是可以很好支持中文的,这种编码的坑应该只有Python2才会有的。
因此可以联想到终端的编码可能存在问题,那么就顺利成章了,之前系统有设置语言环境,而后来某次重启把环境搞掉了。

重新设置环境变量(有必要的话可以放到/etc/perofile里)

export LC_ALL="zh_CN.utf-8"
export LANG="zh_CN.utf-8"

修改/etc/sysconfig/i18n

LANG="zh_CN.utf-8"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh"
SYSFONT="latarcyrheb-sun16"

参考链接