Waline 评论迁移到 Neon PostgreSQL
LeanCloud 2027 年会停止运营,Waline 评论数据库需要提前迁出来。这里记录一下从 LeanCloud 迁到 Neon PostgreSQL 的完整步骤。
这次要做的事情其实很明确:
- 备份 LeanCloud 里的 Waline 评论数据。
- 准备 Neon PostgreSQL。
- 把 Waline 服务端的数据库配置切到 Neon。
- 把评论、用户、统计数据迁过去。
- 检查评论列表、回复关系和邮件通知。
Waline 服务端
Waline 不是只靠博客前端运行。
博客页面里的评论组件会请求一个 Waline 服务端,服务端再去连接后面的数据库。
也就是说,这里有三层:
- 博客前端:显示评论框。
- Waline 服务端:接收评论、读取评论、发送通知。
- 数据库:真正保存评论数据。
这次迁移主要改的是第三层数据库。
博客前端的 serverURL 仍然指向 Waline 服务端,不要填 Neon 数据库地址。
如果用的是 Hexo + NexT,可以在 _config.next.yml 的 waline.serverURL 里看当前 Waline 服务端地址。
Waline 服务端项目里主要依赖:
1 | { |
Neon 和环境变量
这里直接在 Vercel 里绑定 Neon。
操作步骤:
- 打开 Vercel 控制台。
- 进入 Waline 服务端项目,比如
waline-server。 - 找到
Storage、Database或Integrations。 - 选择创建数据库。
- 数据库类型选择
Neon。 - 按提示创建 PostgreSQL 数据库。
- 创建完成后,把 Neon 绑定到当前 Vercel 项目。
- 回到 Vercel 项目的环境变量页面,确认 PostgreSQL 变量已经出现。
后面 Waline 连接成功以后,Neon 里会出现这些表:
wl_comment:评论内容。wl_counter:文章阅读和统计。wl_users:用户和管理员账号。
进入 Vercel 项目:
1 | Settings -> Environment Variables |
配置 PostgreSQL 变量:
1 | POSTGRES_DATABASE |
注意两点。
第一,不要把真实密码写进代码。
第二,能不用完整连接串就不用完整连接串。
尽量不要继续使用:
1 | DATABASE_URL |
因为完整 URL 里一般带用户名、密码和主机名。
日志里如果不小心打印出来,会比较麻烦。
然后把旧 LeanCloud 变量删除:
1 | LEAN_ID |
删完以后,重新部署 Vercel 项目。
迁移评论数据
数据库迁移前一定先备份。
需要备份的不是只有评论内容。
评论里还有昵称、邮箱、IP、回复关系、文章路径这些字段。
迁移的大致步骤是:
- 从 LeanCloud 导出当前 Waline 评论数据。
- 保存一份原始备份,不要直接改原文件。
- 在 Neon 里准备好 Waline 表结构。
- 把评论数据导入
wl_comment。 - 把统计数据导入
wl_counter。 - 把用户数据导入
wl_users。 - 检查评论数量是否一致。
- 检查回复关系是否正常。
这里最容易出问题的是回复关系。
LeanCloud 里的评论 ID 是字符串形式的 objectId。
PostgreSQL 里的 Waline 评论 ID 是数字。
所以迁移时要处理:
- 旧
objectId到新数字id的映射。 - 评论的
pid。 - 评论的
rid。 - 历史回复内容里的
@锚点。
如果这些没有处理好,评论可能能显示,但回复树会乱。
迁移后可以检查一下历史回复里的旧锚点,确认没有残留旧的 24 位 objectId。
这次注意的点
- 先备份,再迁移。
- 不迁移旧 Valine 历史数据,只迁移当前 Waline 评论。
- 不把数据库密码写进仓库。
- 删除旧 LeanCloud 环境变量,避免混用。
- 迁移回复关系时处理好
pid、rid和历史锚点。 - 检查 Vercel 日志,不让完整连接串和 SQL 明细暴露出来。
最终迁移完成后,博客评论还是 Waline。
只是 Waline 后面的数据库,从 LeanCloud 换成了 Neon PostgreSQL。
以上就是 Waline 评论迁移到 Neon PostgreSQL 的整理,如有错误,欢迎大佬指出。