之前我把网站从 Vercel 迁移到了 Netlify(详见《将静态博客和Waline评论系统从Vercel迁移至Netlify》),迁移过程中不可避免地要处理 Waline 评论数据的转移。
数据迁移本身并不复杂,总共有三种方式,下面逐一说明。
这是最省事的做法——如果你原来用的是 Neon 的数据库,只需要在新的 Waline 环境变量里填上原来 Neon 的数据库配置就行了,数据完全不用动。
适合不想折腾的朋友,推荐优先考虑这种方式。
如果需要更换数据库服务商,可以借助数据库管理软件把旧数据库的表导出,再导入到新数据库中。
推荐使用 Navicat Premium Lite,目前个人使用免费,不需要破解。
操作步骤很简单:连接旧数据库 → 找到对应的表 → 导出;然后连接新数据库 → 导入即可。
导入完成后,新评论可能会报错:
duplicate key value violates unique constraint “wl_comment_pkey”
这是因为数据库的自增序列(Sequence)没有随着数据一起迁移,导致新插入的 ID 和已有数据冲突。
解决方法:在数据库中执行以下命令,将序列更新到正确的值:
1 | SELECT setval('wl_comment_seq', (SELECT MAX(id) FROM wl_comment)+1) |
注意:如果使用的是 Nile 这类限制较多的数据库平台,上述命令可能无法执行,甚至连
ALTER TABLE ... ALTER COLUMN ... DROP DEFAULT都不支持。这种情况下建议改用方式三。
登录 Waline 评论系统的后台管理界面,点击上方的导入导出按钮:

在导入导出页面点击导出,浏览器会自动下载一份 JSON 文件,这就是 Waline 中的所有评论数据。
如果你的评论都是普通文字,导入基本不会有问题。但如果评论中夹杂了代码或特殊字符,导入 PostgreSQL 时可能会报错:
ERROR error: invalid Unicode escape at ……
原因是备份数据中的某些内容包含特殊字符,Waline 后台在写入 PostgreSQL 时没有正确处理转义字符。
解决方法:使用以下工具对导出的 JSON 文件进行清理,处理后再导入即可。
GitHub仓库已经列出,如果对数据的处理有某些方面的疑虑,可以进入仓库查看源代码。
以上就是我在数据迁移过程中遇到的所有问题和对应的解决方法,希望能帮到有同样需求的朋友。