Échec de la mise à niveau : UniqueViolation : la valeur de clé en double viole la contrainte unique "data_explorer_queries_pkey"

La mise à jour vers la dernière version échouée aujourd’hui :

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' a échoué avec le retour #<Process::Status: pid 3194 exit 1>
Emplacement de l'échec : /pups/lib/pups/exec_command.rb:112:in `spawn'
exec a échoué avec les paramètres {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
590cf0611c566ea6df5f70ffdd2cec2359e84eaea29b7abcde77d56288a46370
** ÉCHEC DU BOOTSTRAP ** Veuillez faire défiler vers le haut et rechercher les messages d'erreur antérieurs, il peut y en avoir plus d'un.

Ci-dessus dans le journal :

Caused by:
PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint "data_explorer_queries_pkey"
DETAIL:  Key (id)=(-10) already exists.

et

rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

ERROR:  duplicate key value violates unique constraint "data_explorer_queries_pkey"
DETAIL:  Key (id)=(-10) already exists.

Donc, je suppose que je dois me débarrasser de la clé dupliquée data_explorer_queries_pkey.

Comment faire cela ?

1 « J'aime »
3 « J'aime »

Merci, mais je n’arrive pas à accéder à l’application :

./launcher enter app
Réponse d'erreur du démon : Le conteneur 694b24a2a235e90456fb0ca770c86ac14bb914ad33ada8a18fc4777a1188d848 n'est pas en cours d'exécution
root@gaoa-discourse:/var/discourse#

Et aussi :

root@gaoa-discourse:/var/discourse# su - postgres
Aucune entrée passwd pour l'utilisateur 'postgres'
1 « J'aime »

Donc, redémarrez le conteneur ?

./launcher start app

Ensuite, vous voulez quelque chose comme :

./launcher enter app

puis :

su postgres -c 'psql discourse'

4 « J'aime »

Merci ! Je ne sais pas pourquoi cela ne démarrait pas lors de ma première tentative.

Il semble que j’aie un doublon avec l’identifiant « 10 » :

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"}

Je suppose donc que je devrais exécuter ceci :

DELETE from plugin_store_rows WHERE id = 10

ou bien :

DELETE from plugin_store_rows WHERE id = -10

Je suis curieux : lequel sera supprimé par la commande ci-dessus — le premier trouvé ou les deux ?

1 « J'aime »

Les chiffres dans la colonne ID sont 4374 et 4114. Supprimez celui qui a le numéro le plus élevé.

N’exécutez PAS DELETE from plugin_store_rows WHERE id = 10 !! sinon vous supprimerez la mauvaise entrée !

3 « J'aime »

Ah, donc ça ?

DELETE from plugin_store_rows WHERE id = 4374;

1 « J'aime »

Oui. Vous devriez voir le bon en-tête de colonne dans la sortie de la requête PL/SQL, non ?

1 « J'aime »

Maintenant que vous le mentionnez, oui. J’ai fait défiler vers le bas car la sortie ressemble à ceci :

2 « J'aime »

Oui, en général, pensez à exécuter les commandes pour voir leur impact avant de les valider, consultez :

Ainsi, si vous constatez que vous avez supprimé 500 lignes alors que vous ne vouliez en toucher qu’une seule, vous avez la possibilité d’annuler l’opération sans crainte.

3 « J'aime »

Succès ! :tada: Merci pour vos conseils @merefield.

Ma commande DELETE manquait un point-virgule de fermeture (mis à jour ci-dessus).

3 « J'aime »

Ah oui, ça me fait toujours ça :wink:

3 « J'aime »

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