• 多年没有这么花时间解决一个问题了


    Ruby 和 PgSQL 并不是我非常熟悉的领域。

    多年没有花这么多的时间解决一个问题了,从数据的 Dump 到数据导入,到容器的 SQL 执行。

    当你想放弃的时候,发现你有的是一种热爱,喜欢体验到问题被解决的感觉,人还是有需要有理想的。

    尤其是在你感觉到沮丧和低估的时候,你一定要相信自己。

    Buster Moon 说过 : When you’ve reached rock bottom, there’s only one way to go, and that’s up!

    不要放弃,一切问题都是有原因的,也会有解决办法的。

    开始阶段

    最开始的时候我们只是遇到图片没有显示的问题,一直不知道是什么原因。

    后来发现是在 Discourse 的 HTML 没有被正确的重新构建。

    后来,我们发现可能是算法,因为 Discourse 的 URL 短算法有可能会导致没有办法进行完全的解码。

    问题

    当我们继续寻找问题的时候,我们发现没有办法直接查询数据库获得 String 的映射信息。

    这时候怎么办呢?我们只对数据库进行查看,这是第一次我们 dump 数据库。

    Discourse 使用的是 PgSQL 数据库,这个比 MySQL 要更加复杂,所以我们在本地的计算机中装了一个 PGSQL 数据库实例。

    然后把服务器上的备份文件下载到本地后导入到数据库。

    我们最后发现 uploads 的表数据量不一样。

    最后我们才定位到是因为表丢数据了,虽然不知道具体的原因,但是只要恢复具体的数据问题就能解决了。

    2023-09-06_13-37-56

    因为 Discourse 使用了容器,如何执行 SQL 导入数据又是问题。

    我们需要进入 Docker 容器后,然后登录数据库再运行 SQL 才能导入数据。

    同时因为文件格式的不一样,甚至没有办法直接运行 SQL 脚本。

    经过最后一堆折腾后才解决这个问题,很高兴最后问题解决了。

    很长时间没有为了解决一个问题花费这么多时间了,很多人说搞 IT 为什么,调 Bug 为什么。

    有时候只是单纯的因为喜欢。

    多年没有这么花时间解决一个问题了 - 程序人生 - iSharkFly

  • 相关阅读:
    正则验证用户名和跨域postmessage
    JSON 和 BSON的区别
    《DevOps 精要:业务视角》- 读书笔记(二)
    C#/.NET/.NET Core优秀项目框架推荐
    C++Primer——第一讲
    SecureCRT 9.4.2最新终端SSH工具
    免费在线压缩图片
    DI93a HESG440355R3 通过其Achilles级认证提供网络安全
    ARPG、MMORPG、MOBA、卡牌类、棋盘类游戏服务器架构图
    Python | 武理刷题2
  • 原文地址:https://blog.csdn.net/huyuchengus/article/details/132728985