重建 Ghost 日期数据库的新解决方案

上一篇的手动重建 Ghost 日期数据会造成额外的问题. 现在我们有了一种新的解决方案, 由 Github 的 kirrg001 提出, 亲测有效.

解决方案的原文在这里 https://github.com/TryGhost/Ghost/issues/7351#issuecomment-249807585.

步骤

  1. 备份你的数据库文件
  2. sqlite3 ghost.db
  3. SELECT created_at from users where id=1;
  4. 记录输出内容(应为2014-08-12 16:53:27格式的文本), .quit 退出.
  5. 打开 node, 运行 require('moment').utc('2014-08-12 16:53:27').valueOf(), 记录结果(把2014-08-12 16:53:27换成你在步骤 4 得到的输出内容).
  6. 记录输出内容(应为 UNIX 时间戳)
  7. 在 sqlite3 执行 UPDATE users set created_at=YOU_VALUE where id=1, 用你在步骤 6 得到的输出内容替换YOU_VALUE
  8. 停掉你的 Ghost 服务器
  9. 执行FORCE_MIGRATION=true npm start --production让 Ghost 在启动时强制进行数据库升级.
  10. 等待升级完毕, Ctrl + C 中断 Ghost 服务器运行.
  11. 用原来的启动方式启动 Ghost, 现在日期数据应该已经被重建了.