¿Cómo comprobar qué impide la migración de rake?

Estoy probando multisitio, he instalado la segunda instancia y funciona a la perfección.

Pero ahora no puedo reconstruir. Los registros muestran:

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

Intenté sin plugins y sigue roto. Puedo iniciar la aplicación pero no reconstruir.

¿Has instalado Discourse Chatbot :robot: (compatible con ChatGPT)?

Sí y traté de desinstalarlo entonces (porque vi que no puedo probar complementos en multisitio sin elegirlos manualmente).

Ese error proviene de ahí, necesitarás corregir manualmente el registro de la base de datos y eliminar los duplicados incluso después de desinstalar un complemento, ya que lo que agrega a una base de datos es permanente.

2 Me gusta

Gracias. ¿Puede confirmar si eso es lo que busco?

discourse=# \d category_users
                                            Tabla «public.category_users»
       Columna       |            Tipo             | Collation | Nullable |                  Default                   
--------------------+-----------------------------+-----------+----------+--------------------------------------------
 id                 | integer                     |           | not null | nextval('category_users_id_seq'::regclass)
 category_id        | integer                     |           | not null | 
 user_id            | integer                     |           | not null | 
 notification_level | integer                     |           | not null | 
 last_seen_at       | timestamp without time zone |           |          | 
Índices:
    «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)

Intenté DROP INDEX idx_category_users_category_id_user_id pero realmente agradecería el comando preciso aquí :slight_smile:

Hmmm, presumiblemente docenas de instalaciones y ningún problema de este tipo del que tenga conocimiento.

¿Cuál es el problema específico aquí?

El script de fixtures siembra el usuario del bot (para que el administrador no necesite acceder a la consola de rails) y eso puede fallar si se intenta dos veces, pero hay una verificación. Comprobaré si la verificación es a prueba de fallos. ¿Se está ejecutando dos veces en este tipo de instalación?

¡NO debes eliminar el índice!

Solo necesitas eliminar el registro duplicado.

Busca el segundo registro con user_id = -4 y category_id 9 y elimínalo usando su id.

Esta es una operación arriesgada, así que primero verifica con:

SELECT FROM category_users WHERE id = <el segundo id>;

para asegurarte de que solo devuelva un registro, luego:

DELETE FROM category_users WHERE id = <el segundo id>;

¿Puedes recordar qué cambios hiciste, si es que hiciste alguno, con respecto al bot?

3 Me gusta

Solo para añadir que no creo que necesites eliminar el plugin aquí una vez que esto se resuelva, pero tengo mucha curiosidad por saber por qué surgió este escenario en primer lugar, ya que no había recibido otros informes.

Gracias Robert, pregunté porque claramente no soy un experto en bases de datos y tengo copias de seguridad, pero siempre es mejor no hacer algo mal deliberadamente :smiling_face_with_sunglasses:

El bot no ha sido modificado por mí, pero estoy usando categorías predeterminadas en cada grupo y parece que eso rompe tu implementación.

Hay más información aquí en Meta, espero que puedas averiguar esto y agregar algunas comprobaciones para evitar el problema:

2 Me gusta

Ok, así que tal vez no fue enteramente mi culpa :sweat_smile:

2 Me gusta