Wie überprüfe ich, was die Rake-Migration verhindert?

Ich versuche es mit Multisite. Ich habe die zweite Instanz installiert und sie funktioniert einwandfrei.

Aber jetzt kann ich einfach nicht neu bauen. Die Logs zeigen:

warning " > babel-plugin-debug-macros@0.4.0-pre1" has unmet peer dependency "@babel/core@^7.0.0".
warning "workspace-aggregator-ffab61d1-8b70-4cda-8f38-dde575adc062 > discourse > @uppy/xhr-upload@3.1.0" has incorrect peer dependency "@uppy/core@^3.0.6".
PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint "idx_category_users_user_id_category_id"
DETAIL:  Key (user_id, category_id)=(-4, 9) already exists
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 695 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:\nmigrate'"]}
bootstrap failed with exit code 1

Habe es ohne Plugins versucht und es ist immer noch kaputt. Ich kann die App starten, aber nicht neu bauen.

Haben Sie Discourse Chatbot :robot: (unterstützt ChatGPT) installiert?

Ja, und ich habe versucht, es zu deinstallieren (weil ich gesehen habe, dass ich Plugins in Multisite nicht testen kann, ohne sie von Hand auszuwählen).

Diese Fehlermeldung kommt daher. Sie müssen den Datenbankeintrag manuell korrigieren und die Duplikate entfernen, auch nach der Deinstallation eines Plugins, da das, was es zur Datenbank hinzufügt, dauerhaft ist.

2 „Gefällt mir“

Danke. Können Sie bitte bestätigen, ob das das ist, was ich suche?

discourse=# \d category_users
                                            Tabelle "public.category_users"
       Spalte       |            Typ             | Kollation | Nullable |                  Standard                   
--------------------+-----------------------------+-----------+----------+--------------------------------------------
 id                 | integer                     |           | nicht null | nextval('category_users_id_seq'::regclass)
 category_id        | integer                     |           | nicht null | 
 user_id            | integer                     |           | nicht null | 
 notification_level | integer                     |           | nicht null | 
 last_seen_at       | timestamp without time zone |           |          | 
Indizes:
    "category_users_pkey" PRIMARY KEY, btree (id)
    "idx_category_users_category_id_user_id" UNIQUE, btree (category_id, user_id)
    "index_category_users_on_user_id_and_last_seen_at" btree (user_id, last_seen_at)

Ich habe DROP INDEX idx_category_users_category_id_user_id versucht, aber ich würde den genauen Befehl hier wirklich zu schätzen wissen :slight_smile:

Hmmm, vermutlich Dutzende von Installationen und keine Probleme dieser Art, soweit ich weiß.

Was ist hier das spezifische Problem?

Das Fixtures-Skript versorgt den Bot-Benutzer mit Daten (damit der Administrator nicht die Rails-Konsole aufrufen muss) und dies kann fehlschlagen, wenn es zweimal versucht wird, aber es gibt eine Überprüfung. Ich werde prüfen, ob die Überprüfung bombenfest ist. Läuft dies bei dieser Installationsart zweimal?

Sie sollten den Index NICHT löschen!

Sie müssen nur den doppelten Datensatz löschen.

Finden Sie den zweiten Datensatz mit user_id = -4 und category_id 9 und löschen Sie ihn anhand seiner id.

Dies ist ein riskanter Vorgang, überprüfen Sie ihn daher zuerst mit:

SELECT FROM category_users WHERE id = <die zweite ID>;

um sicherzustellen, dass nur ein Datensatz zurückgegeben wird, und dann:

DELETE FROM category_users WHERE id = <die zweite ID>;

Können Sie sich erinnern, welche Änderungen Sie bezüglich des Bots vorgenommen haben?

3 „Gefällt mir“

Um noch hinzuzufügen, glaube ich nicht, dass Sie das Plugin hier entfernen müssen, sobald dies behoben ist, aber ich bin sehr neugierig, warum dieses Szenario überhaupt aufgetreten ist, da es keine anderen Berichte gab?

Danke Robert, ich habe gefragt, weil ich offensichtlich kein DB-Typ bin und ich sowieso Backups habe, aber es ist immer besser, nicht absichtlich das Falsche zu tun :smiling_face_with_sunglasses:

Der Bot wurde nicht von mir modifiziert, aber ich verwende Standardkategorien in jeder Gruppe und es scheint, dass dies Ihre Implementierung beeinträchtigt.

Hier gibt es weitere Informationen auf Meta, ich hoffe, Sie können dies herausfinden und einige Prüfungen hinzufügen, um das Problem zu vermeiden:

2 „Gefällt mir“

Okay, also vielleicht nicht ganz meine Schuld :sweat_smile:

2 „Gefällt mir“