Aggiornamento fallito: UniqueViolation: valore chiave duplicato viola vincolo univoco "data_explorer_queries_pkey"

L’aggiornamento odierno all’ultima versione non è riuscito:

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' fallito con codice di ritorno #<Process::Status: pid 3194 exit 1>
Posizione dell'errore: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec fallito con i parametri {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
590cf0611c566ea6df5f70ffdd2cec2359e84eaea29b7abcde77d56288a46370
** FALLIMENTO DURANTE L'AVVIO ** scorri verso l'alto e cerca i messaggi di errore precedenti; potrebbero essercene più di uno.

Sopra nel log:

Causato da:
PG::UniqueViolation: ERRORE: valore di chiave duplicato viola il vincolo di unicità "data_explorer_queries_pkey"
DETTAGLIO: La chiave (id)=(-10) esiste già.

e

rake abortito!
StandardError: Si è verificato un errore; questa e tutte le successive migrazioni sono state annullate:

ERRORE: valore di chiave duplicato viola il vincolo di unicità "data_explorer_queries_pkey"
DETTAGLIO: La chiave (id)=(-10) esiste già.

Quindi, immagino di dover eliminare la chiave duplicata data_explorer_queries_pkey.

Come posso farlo?

1 Mi Piace
3 Mi Piace

Grazie, ma non riesco ad accedere all’app:

./launcher enter app
Risposta di errore dal demone: Il container 694b24a2a235e90456fb0ca770c86ac14bb914ad33ada8a18fc4777a1188d848 non è in esecuzione
root@gaoa-discourse:/var/discourse#

E anche:

root@gaoa-discourse:/var/discourse# su - postgres
Nessuna voce di password per l'utente 'postgres'
1 Mi Piace

Quindi riavvia il container?

./launcher start app

Poi vuoi qualcosa del genere:

./launcher enter app

poi:

su postgres -c 'psql discourse'

4 Mi Piace

Grazie! Non sono sicuro del motivo per cui non si sia avviato al primo tentativo.

Sembra che abbia un ID “10” duplicato:

4374 | discourse-data-explorer | q:-10 | JSON      | {"id":-10,"name":"Inactive Users with no posts","description":"analyze pre-Discourse signups.","sql":"SELECT\
n    u.id,\n    u.username_lower AS \"username\",\n    u.created_at,\n    u.last_seen_at\nFROM users u\nWHERE u.active = false\nORDER BY u.id\n","created_by":"-1",
"created_at":null,"group_ids":[],"last_run_at":"2019-10-21T04:03:35.548+00:00"}

4114 | discourse-data-explorer | q:-10 | JSON      | {"id":-10,"name":"Inactive Users with no posts","description":"analyze pre-Discourse signups.","sql":"SELECT\
n    u.id,\n    u.username_lower AS \"username\",\n    u.created_at,\n    u.last_seen_at\nFROM users u\nWHERE u.active = false\nORDER BY u.id\n","created_by":"-1",
"created_at":null,"last_run_at":"2019-02-27T06:17:48.317+00:00"}

Quindi immagino dovrei eseguire questo:

DELETE from plugin_store_rows WHERE id = 10

o dovrebbe essere:

DELETE from plugin_store_rows WHERE id = -10

Sono curioso: quale dei due verrà cancellato dal comando sopra? Il primo che trova o entrambi?

1 Mi Piace

I numeri nella colonna ID sono 4374 e 4114. Elimina quello con il numero più alto.

NON eseguire DELETE from plugin_store_rows WHERE id = 10!! o eliminerai la voce sbagliata!

3 Mi Piace

Ah, quindi questo?

DELETE from plugin_store_rows WHERE id = 4374;

1 Mi Piace

Sì. Dovresti vedere l’intestazione della colonna corretta nell’output della query PL/SQL, vero?

1 Mi Piace

Ora che lo menzioni, sì. Ho fatto scorrere verso il basso perché l’output è così:

2 Mi Piace

Sì, inoltre, in generale, valuta di eseguire i comandi per verificarne l’impatto prima di confermare, vedi:

In questo modo, se scopri di aver cancellato 500 righe invece di eliminarne solo una, avrai la possibilità di annullare l’operazione senza preoccupazioni.

3 Mi Piace

Successo! :tada: Grazie per la guida @merefield.

Il mio comando DELETE mancava di un punto e virgola di chiusura (aggiornato sopra).

3 Mi Piace

Ah sì, mi succede ogni volta :wink:

3 Mi Piace

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.