迁移博客数据库,从 leancloud 迁移到 sqlite
2024年11月28日...大约 2 分钟
1. 前言
从博客建立之初到现在,评论系统的数据库一直是用的 leancloud
,最开始是国内版,后面又因为要接入备案才能使用,就改成了国际版。但是国际版有个最大的问题就是:查询数据响应速度慢,经常加载评论区数据好几秒钟,网络波动大的时候甚至可能会更久或失败。
所以,从这篇文章发布开始,数据库正式由 leancloud
迁移到了 sqlite
。大大的优化了评论区的加载速度🥳
下面我将说说过程和遇到的一些问题。
2.迁移
迁移倒是很简单,由于我使用的 waline 评论系统使用 Docker Compose 部署的,所以,将 compose 复制一份出来,修改好配置,再临时起一个评论服务系统用于迁移数据库(简称为测试环境吧)。
从正式环境的评论系统后台中导出数据,然后本地启动博客连接到测试环境的评论服务上,打开评论系统后台随便创建一个账号登录上去之后再导入数据。
3. 踩坑
3.1 数据导入失败
我在导入过程中,出现了导入失败的情况,原因是:有几个注册的账号没有设置昵称和邮箱,导致导出的json数据文件中没有 display_name
和 email
两个字段。
解决方法很简单,手动修改导出的json数据文件,给没有的用户手动添加空字段即可。
3.2 评论和账户失去了关联
通过数据库管理工具打开 sqlite 的数据库文件,找到表 wl_Comment
可以看到,字段 user_id
全是 null
,这个字段按理来说,如果是注册用户发布的评论,它的值应该和 wl_Users
表中的 id
对应。
所以,编写一条sql语句,通过邮箱或者昵称,找出这些数据,将 user_id
修改上,我是通过邮箱来修改的,语句如下:
-- 查找符合条件的数据
SELECT *
FROM wl_Comment
WHERE mail = '123@email.cn';
-- 更新符合条件的数据
UPDATE wl_Comment
SET
user_id = 1,
WHERE mail = '123@email.cn';
Powered by Waline v3.4.2