Errore nell'aggiornamento all'ultima versione di Discourse -- risolto

Corretto.

Ci è voluto un po’ di manipolazione del DB. Ho usato l’immagine Docker di Postgres per montare il database:

docker run --name postgres_container_2 -e POSTGRES_PASSWORD=mysecretpassword -d -p 5432:5432 -v /var/discourse/shared/standalone/postgres_data:/var/lib/postgresql/data postgres:15

Poi ho individuato la riga della tabella incriminata:

SELECT
          tc.topic_id,
          tc.answer_post_id,
          tc.topic_timer_id,
          tc.accepter_user_id,
          tc.created_at,
          tc.updated_at
        FROM (
          SELECT
            tc.topic_id,
            CAST(tc.value AS INTEGER) AS answer_post_id,
            CAST(tc2.value AS INTEGER) AS topic_timer_id,
            COALESCE(ua.acting_user_id, -1) AS accepter_user_id,
            tc.created_at,
            tc.updated_at,
            ROW_NUMBER() OVER (PARTITION BY tc.topic_id ORDER BY tc.created_at ASC) AS rn_topic,
            ROW_NUMBER() OVER (PARTITION BY CAST(tc.value AS INTEGER) ORDER BY tc.created_at ASC) AS rn_answer
          FROM topic_custom_fields tc
          LEFT JOIN topic_custom_fields tc2 ON tc2.topic_id = tc.topic_id AND tc2.name = 'solved_auto_close_topic_timer_id'
          LEFT JOIN user_actions ua ON ua.target_topic_id = tc.topic_id AND ua.action_type = 15
          WHERE tc.name = 'accepted_answer_post_id'
            AND tc.id > 0
            AND tc.id <= 0 + 10000
            AND tc.value IS NULL
        ) tc

Una volta che ho avuto la certezza che questo selezionasse solo la riga nell’errore, ho cambiato il select in un DELETE, ho incrociato le dita e ./launcher rebuild app.

Dopo aver atteso molto tempo che l’immagine venisse creata, ora ho una community felice e un sito ricostruito, con correzioni di sicurezza incluse.

Non so cosa abbia causato l’invalidità della riga menzionata sopra, ma una volta rimossa, tutto è andato bene.

4 Mi Piace