可以恢复访问记录吗?

您好,

最近,由于域名出现问题,我们的论坛停机了整整两天。

这导致了所有人的访问连胜记录中断,这对大多数人来说是非常糟糕的。

我想恢复这些记录,该如何操作?

1 个赞

你需要设法向表中添加数据,使其看起来像是每个人都在那些日子里访问过。你需要读取源文件,找出需要添加行的表,然后为每个用户在这些表上创建记录。

如果你不知道如何操作,并且没有很快得到回复,你可以在 Marketplace 发布预算。

2 个赞

他们需要理清优先事项 :wink:

另外,要将访问记录从一天复制到另一天,您需要运行此 SQL 查询

insert into user_visits
  select 0, user_id, '2022-09-09', posts_read, mobile, 0
  from user_visits
  where visited_at = '2022-09-08'
;

其中第一个日期是您想要伪造的日期,第二个日期是您想要从中复制的日期。

7 个赞

理查德再次拯救了这一天!多么棒的解决方案。我一直在想如何在不给每个人都记功劳的情况下做到这一点。太棒了!

5 个赞

有多少人对此抱怨,你可能会感到震惊 :face_with_diagonal_mouth:

谢谢你的脚本,我可以在哪里运行它?

2 个赞
cd /var/discourse
./launcher enter app
rails c
DB.exec("insert into user_visits select 0, user_id, '2022-09-09', posts_read, mobile, 0 from user_visits where visited_at = '2022-09-08'")
4 个赞

嘿,我们又发生了一次中断,当我再次尝试恢复访问记录时,出现了一个错误。

[6] pry(main)> DB.exec("insert into user_visits select 4, user_id, '2022-12-31', posts_read, mobile, 0  from user_visits where visited_at = '2022-09-01'")
PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint "user_visits_pkey"
DETAIL:  Key (id)=(4) already exists.

from /var/www/discourse/vendor/bundle/ruby/3.1.0/gems/rack-mini-profiler-3.0.0/lib/patches/db/pg.rb:110:in `exec'