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 的表数据量不一样。
最后我们才定位到是因为表丢数据了,虽然不知道具体的原因,但是只要恢复具体的数据问题就能解决了。
因为 Discourse 使用了容器,如何执行 SQL 导入数据又是问题。
我们需要进入 Docker 容器后,然后登录数据库再运行 SQL 才能导入数据。
同时因为文件格式的不一样,甚至没有办法直接运行 SQL 脚本。
经过最后一堆折腾后才解决这个问题,很高兴最后问题解决了。
很长时间没有为了解决一个问题花费这么多时间了,很多人说搞 IT 为什么,调 Bug 为什么。
有时候只是单纯的因为喜欢。
https://www.isharkfly.com/t/topic/14709