phpbb3 가져오기로 빈 게시글이 생성되었습니다

한 사이트에 phpbb3 가져오기를 수행했습니다. 관리자 사용자는 수천 개의 게시물을 가지고 있으며, 이는 사용자 요약 페이지와 https://estude.profcaju.com/u/USER/activity에 나열되어 있습니다. 하지만 해당 사용자가 /posted를 방문하면 가져오기 이후의 주제만 표시됩니다.

해당 사용자가 생성한 가져온 주제를 확인하고, 해당 주제/사용자에 대해 Topicuser를 조회해 보면 posted가 false로 설정되어 있습니다. 찾을 수 있는 모든 ensure_consistency 작업(TopicUser, Topic, User)을 실행해 보았습니다.

TopicUser에서 posted를 true로 설정하면 /posted에 표시됩니다.

TopicUser.where(user_id: 1).update_all(posted: true)와 같은 작업을 수행해야 하나요? 모든 사용자에게 그렇게 해야 하나요?

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 단계에서, 더 구체적으로는 여기에서 생성됩니다.

지금 바로 실행할 수 있는 수정 사항을 담은 PR을 열었습니다: