[Sitio caído :(] Fallo en actualización/reconstrucción - ¿Problema de migración de base de datos?

Actualizando a la versión actual de Discourse hoy, la reconstrucción está fallando y no estoy seguro de qué la está causando. La instalación estaba bastantes iteraciones atrás (creo que 2.8x). La actualización de la imagen de Docker fue bien cuando fui a actualizar Discourse, se me pidió que hiciera un pull y reconstrucción manual (la mayoría de las veces se me pide esto), sin embargo, la reconstrucción no ha sido exitosa.

Aquí están los resultados de una búsqueda de “error” usando discourse-doctor. Disculpas por las capturas de pantalla, el cliente VNC basado en web que tengo no parece soportar copiar y pegar.

image

Parece que cree que tienes dos usuarios llamados racerx. Creo que hay un tema sobre un problema similar aquí:

También hay uno más reciente aquí:

4 Me gusta

Gracias, comenzaré por ese camino… ¡deséame suerte!

1 me gusta

No puedo avanzar sobre cómo iniciar la reindexación. He podido iniciar (aunque no es accesible por web) y entrar en la aplicación, pero no he tenido suerte para seguir adelante.

image

2 Me gusta

Necesitas ejecutar esos comandos dentro del contenedor. Algo como

./launcher start app
./launcher enter app

Antes de sudo postgres

Editar: oh, entraste al contenedor.

Ese postgres -c necesita sudo antes.

4 Me gusta

Supongo que sudo no funcionaría, pero su sí y ahora estoy investigando en postgres.

Ahora necesito averiguar cómo solucionar los duplicados. La consulta parece ser…

UPDATE users SET username_lower = 'xxx' WHERE id = xxx;

Intenté un par de variaciones sin éxito. Como puedes ver, no estoy 100% seguro de cuál es la sintaxis correcta aquí, ya que el error está relacionado con la columna.

Seguiré investigando. Tampoco sé cuántos duplicados tengo…

/editar… es solo racerx. ¡MALDICIÓN RACERX!

image

2 Me gusta

¿Descubriste cómo arreglarlo?

También devolvería el ID de los usuarios (que es único) para identificarlos correctamente y luego cambiaría el nombre de uno de estos dos usuarios :slight_smile:

4 Me gusta

Ampliando lo que @Canapin ha dicho, en caso de que aún no lo hayas descubierto, debería ser sencillo hacer que los nombres de usuario sean únicos ya que ya has establecido que racerx es el único nombre de usuario duplicado.

Primero, si aún no lo has hecho, asegúrate de que racerx2 no exista ya para que no estés simplemente moviendo el problema a un nombre de usuario diferente: (Si obtienes un id, prueba con un nombre de usuario diferente).

SELECT id FROM users WHERE username_lower = 'racerx2';

Una vez que tengas un nombre de usuario sin usar, obtén los IDs de las cuentas duplicadas de racerx:

SELECT id from users WHERE username_lower = 'racerx';

Elige uno, no importa cuál, aunque yo usaría el más alto, luego cambia su nombre de usuario: (Sustituyendo racerx2 por un nombre de usuario diferente si es necesario y 12345 con el racerx ID que elegiste).

UPDATE users SET username_lower = 'racerx2' WHERE id = 12345;
3 Me gusta

Actualización (Estuvo en borradores unos días, lo siento) Parece que lo resolví. No estoy seguro si lo que hice fue el enfoque correcto, pero se reconstruyó con éxito.

Me resultó difícil modificar/agregar el valor de racerx en la columna username_lower usando la sintaxis, así que lo abordé de otra manera. Buscando los IDs de las filas y modificando el valor de username_lower en una fila específica.

Primero intenté obtener un informe de todas las filas en la tabla users que tenían “racerx” en la columna username_lower.

select all from users where username_lower ='racerx';

A partir de esto, decidí modificar racerx a racerx2, no recuerdo exactamente lo que escribí para que eso sucediera. Creo que fue UPDATE SET de users username_lower racerx a racerx2

2 Me gusta

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