#分享 , #工具箱
0.17后的memos变化挺大的,不过因为作者每次发布的版本都是直接推送到了Docker的Latest的分支上,所以这些版本没有经过一定基数的用户测试,自然无可避免的会出现问题。
所以导致了最近的几个版本出现了性能问题,程序可能在作者的系统上跑的还不错,不过在用户们升上去后因为环境的差异出现了一些莫名奇妙的问题。
大部分用户反应内存占用、CPU占用过高,导致服务器死机,而我则是出现了首页数据等五六秒才会加载出数据的情况。
一开始我还以为单纯是我的问题,后来看到TG群组中大量用户都在反应这个问题才知道出了这么一档子事。
目前已经成功从0.19降级到了0.17,因为目前关于Memos如何降级的资料非常少,所以这里分享一下我的操作过程,希望能帮到有需要的小伙伴。
其他方案
部分内容。不过从0.17后的界面变化能看出作者也在探索Memos未来的发展方向,看样子是有心往更专业的笔记软件靠拢。
不过从目前的修改来说,我并不是非常看好目前的改动方向,不过这时题外话了。
我之前写过一个VPS文件备份的脚本,保留了我最近的30天每一天所有docker的data文件备份,并用rclone同步到了OneDrive上。
经过我的筛查,上一个没有大改的版本是0.18.1
,这个版本发布于2个月前。
所以最简单的方法是找一个没升级之前的数据库版本,并重新起一个对应版本的容器即可。本来我是会丢失这个版本的数据的,但是我去年12月底换了服务器,新服务器还没开始使用之前写的备份脚本,所以OneDrive上有幸可保留了这部分数据。
如果自己没有手动备份,可以看看容器目录下有没有名为 memos_0.10.0_1673066763_backup.db
的自动备份数据库,这是个memos在大版本升级后保留的自动备份。
(为什么最近的Memos大更新不备份数据了呢??这么简单的容错操作都不执行)
如果以上的几个方案你都没有,那就直接新起一个容器,再执行下方的操作是一样的。
利用一些Sqlite的 ATTACH DATABASE
功能,我们可以附加多个数据库到终端或者GUI工具中,此时再编写 INSERT INTO
语法即可搭配查询语法批量插入数据。
比如我这里使用的 sqlitebrowser 这款开源GUI工具完成操作,并用m19
指代高版本数据库,低版本数据库没有别名 ,步骤如下,。
附加数据库
功能附加m19
数据库m19
中查询低版本中数据库不存在的数据SELECT id, creator_id, created_ts, updated_ts, row_status, content, visibility
FROM m19.memo
WHERE id NOT IN (SELECT id FROM memo);
INSERT INTO memo (id, creator_id, created_ts, updated_ts, row_status, content, visibility)
SELECT id, creator_id, created_ts, updated_ts, row_status, content, visibility
FROM m19.memo
WHERE id NOT IN (SELECT id FROM memo);
其他表使用同样的方式插入数据即可。
根据蜗牛大佬提供的方案,也可以通过修改表结构的方式直接用0.19.x的数据库。
DROP INDEX idx_memo_resource_name;
ALTER TABLE memo DROP COLUMN resource_name;
DROP INDEX idx_resource_resource_name;
ALTER TABLE resource DROP COLUMN resource_name;
希望以上内容对你有所帮助。
Enjoy~!
加入评论