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.
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.
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.
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;
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