感谢您报告此问题,Jay!
这似乎是 ensure_consistency rake 任务的一个问题。我刚刚检查了我现在正在处理的一个迁移(尚未运行 ensure_consistency 任务),TopicUser 记录已经以 posted: false(默认值)创建。当 rake 任务到达 这一点 时,它会生成一个“duplicate key”错误,并且由于 ON CONFLICT DO NOTHING 记录未被创建。
def insert_topic_users
log "Inserting topic users..."
DB.exec <<-'SQL'
INSERT INTO topic_users (user_id, topic_id, posted, last_read_post_number, first_visited_at, last_visited_at, total_msecs_viewed)
SELECT user_id, topic_id, 't' , MAX(post_number), MIN(created_at), MAX(created_at), COUNT(id) * #{MS_SPEND_CREATING_POST}
FROM posts
WHERE user_id > 0
GROUP BY user_id, topic_id
ON CONFLICT DO NOTHING
SQL
end
TopicUser 记录在 create_topic 步骤中创建,更具体地说是在这里 discourse/lib/topic_creator.rb at main · discourse/discourse · GitHub
我打开了一个包含修复程序的 PR,您可以立即运行: