VVCMS 该选 SQLite、MySQL 还是 PostgreSQL?

最后更新时间:2026-09-22 19:03:16

1. 三种都支持,官方做了兼容处理

VVCMS 同时支持 SQLiteMySQLPostgreSQL,并且在备份恢复、字段兼容、自增序列等地方都做了统一处理。选哪个主要取决于你的规模和运维条件。

2. 怎么选

数据库适合不适合
SQLite本地试玩、单机小站、演示环境、快速体验。零安装、零配置,拷走文件就是备份。多实例部署、高并发写入。它是文件级锁,写多会争用。
MySQL大多数生产站点。生态成熟,运维资料多,备份工具齐全。需要用到 PG 特有能力的场景。
PostgreSQL已有 PG 运维体系、对事务和一致性要求高、数据量较大的站点。没有 PG 运维经验的小团队——出问题排查成本更高。

3. 各数据库要注意的点

3.1 SQLite

  • 数据库就是文件,备份必须包含这个文件,不能只依赖后台导出的 JSON 备份。
  • 日志清理按 500 条一批删除。SQLite 默认编译选项不支持 DELETE ... LIMIT,一次性删几十万行会产生超大事务并长时间锁表——这是分批的原因,不要自己改成单条大删除。

3.2 PostgreSQL

  • 恢复后会自动同步自增序列,避免插入时主键冲突。如果你手工导入过数据而没同步序列,会遇到主键重复报错。
  • 表名 column 在 PG 里是保留字,裸写 SQL 会直接语法报错。项目内部已统一走 ORM 和引号处理,你自己写 SQL 时要格外注意——优先用 ORM,别手拼。

3.3 MySQL

  • 注意字符集。建议统一使用 utf8mb4,否则 emoji 和部分生僻字会写入失败或变成问号。

4. 能不能中途换数据库

可以,但不要手工导数据,走后台的备份恢复:

  1. 在旧环境导出 JSON 备份(v2 格式,三种数据库统一)。
  2. 在新环境装好 VVCMS 并配置新数据库,完成初始化。
  3. 导入备份文件恢复。

系统会校验备份文件的版本、表名、列名和目标表结构,对不上会明确报错而不是静默写入半份数据。

5. 换数据库时必须另外带走的东西

后台备份只包含数据库里的站点数据(safe-site 范围),这三类不在里面

  • uploads 上传目录(图片、附件)
  • 主题目录文件
  • 用户身份表

换库时这些要另外打包迁移,否则会出现「文章都在、图片全裂」的情况。

6. 建议

  • 先跑起来用 SQLite,确认流程顺手了再迁到 MySQL/PG,迁移成本很低。
  • 生产环境不要用 SQLite 跑多实例
  • 升级前一定先备份,并且在测试环境完整跑一遍恢复流程——没验证过的备份等于没有备份。