前因

我个人原因总喜欢把程序升级到最新版本(无脑小白鼠)包括但不限于手机系统,服务器系统,各种软件APP,开始就因为个人比较喜欢使用Mysql,方便管理,几乎所有的程序在能通过Mysql部署的前提下就都是通过的Mysql部署的。

起初以为是没有使用Memos默认的SQLite数据库部署导致的加载缓慢(远程数据库总会比本地的稍微慢丢丢),无脑冲了最新的0.20.0,截至写文前我看貌似发版被撤回了,刚好前几天服务器面板由臃肿菜鸡塔换到了1Panel,用Memos默认配置搭建测试了下,首页加载任然特别慢,打开网络活动才看到首页加载了一个封装好的 gomark 库,文件比较大平均加载耗时约15ms左右。

习惯性的点开了大佬们的博客,看到木木dalao的版本任然停留在0.18.1,加上最新的改版也少了比较多功能,越用越不习惯,于是动了版本回退的想法。

昨天起初没有发表日记,将docker镜像由0.20.0改为0.18.1,成功退回0.18.1,看了大佬们的退回方法才发现要改动数据库因为我是Mysql以为就没啥事了,就没进行修改,在今天早上准备发日记的时候发现无法发送。

1708764807660.png

数据库备份

在前几天更换服务器系统的时候就有备份,加上每天都有定时的oss同步备份,因为昨天对网站个性化进行了一些修改,还是对数据库进行了备份操作,在进行任何修改前一定要备份,一定要备份,一定要备份,一定要!!!

修改数据表

原因是因为新版本增加了两条索引idx_memo_resource_nameidx_resource_resource_name分别在memoresource表中。

20240224更新:中午在给Memos添加Telegram Bot时发现无法正常添加使用,在仔细对比0.20.0和0.18.1数据表时发现多了一张reaction表,另外system_setting表中多了条低版本没有的记录memo-display-with-updated-ts

memo

查看memo表中索引是否存在

SHOW INDEXES FROM memo;

1708584848069.png

使用DROP INDEX语句来删除索引

DROP INDEX idx_memo_resource_name ON memo;

1708584934703.png

索引idx_memo_resource_name已成功从memo表中删除。

使用ALTER TABLE语句来删除memo表中resource_name

ALTER TABLE memo DROP COLUMN resource_name;

1708586328286.png

resource

查看resource表中索引

SHOW INDEXES FROM resource;

1708585061606.png

使用DROP INDEX语句删除索引

DROP INDEX idx_resource_resource_name ON resource;

1708585180156.png

使用ALTER TABLE语句来删除resource中的resource_name

ALTER TABLE resource DROP COLUMN resource_name;

1708586650102.png

reaction

首先查看数据库中reaction表是否存在

SHOW TABLES;

1708764612678.png

删除reaction

DROP TABLE reaction;

1708763606979.png

system_setting

查看system_setting表中name列的记录

SELECT name FROM system_setting;

1708764538551.png

删除memo-display-with-updated-ts这条记录

DELETE FROM system_setting WHERE name = 'memo-display-with-updated-ts';

1708764722191.png

完成上述操作后,建议再重新拉一下镜像。

写在最后

大功告成,目前已经成功从 0.20.0 降级到了 0.18.1,因为目前关于 Memos 如何降级的资料非常少,所以这里分享一下基于Mysql我的操作过程,希望能帮到有需要的小伙伴。