Anoche tuve un problema enorme en un foro y tuve que recrear todo. Pero durante la restauración, surgió un error y la operación falló. Aquí está el mensaje de error:
ERROR: could not create unique index "index_users_on_username_lower"
DETAIL: Key (username_lower)=(lea) is duplicated.
EXCEPTION: psql failed: DETAIL: Key (username_lower)=(lea) is duplicated.
Creo que esto podría estar relacionado con el inicio de sesión de Twitter, pero ¿puede la restauración cambiar un nombre username_lower si está duplicado? No creo que pueda modificarlo en el archivo SQL (es bastante grande) y volver a subirlo.
Fue un problema diferente: el servidor no pudo acceder a pups.git. No se pudo resolver el host: github.com. Probé algunas soluciones que encontré anoche, pero no funcionaron.
Con la restauración, creo que solo afecta a un nombre de usuario (quizás relacionado con la creación de cuenta con un solo clic de Twitter, o algo similar). Estoy intentando solucionarlo manualmente, pero gestionar un archivo SQL de 1 GB no es lo ideal.
Edición: con el software vim, pude editar el archivo SQL y encontré las líneas correctas. La restauración funcionó. Solo necesito volver a generar todo y debería estar listo.
Había un nombre de usuario “Lea” y otro “lea”. Es extraño que Discourse permitiera eso. Es un foro bastante antiguo (junio de 2014) y lo actualicé con frecuencia, así que tal vez se debió a una versión específica.
Soy pésimo en SQL. Para encontrar la tabla correcta, busqué username_lower,. Esto me llevó a la tabla de usuarios, luego busqué “lea”. Edité las dos entradas de Lea. Probablemente fue mucho más fácil de otra manera, pero recuerda que soy malo en SQL, especialmente cuando los archivos tienen 1.5 GB. Guarda el archivo.
Comprime el archivo dump.sql con 7zip. Deberías tener un nuevo archivo llamado: dump.sql.gz.
Crea una nueva carpeta en /var/discourse/shared/standalone/backups/default/. Yo usé “test”.
Si tienes una buena conexión a internet, sube la carpeta uploads que obtuviste al descomprimir tu archivo de copia de seguridad y colócala en /var/discourse/shared/standalone/backups/default/test/.
6.1 Si no tienes una buena conexión como yo, debes usar tu servidor. Anota el nombre de tu archivo de copia de seguridad y usa este comando: tar xvzf /var/discourse/shared/standalone/backups/default/yourbackupfile.tar.gz -C /var/discourse/shared/standalone/backups/default/test.
6.2 En la carpeta “test”, tendrás un archivo dump.sql.gz y la carpeta uploads. Está bien.
Sube el archivo dump.sql.gz de tu carpeta “test” para reemplazar el archivo dump.sql.gz dañado.
En tu servidor: ve a cd /var/discourse/shared/standalone/backups/default/test.
Necesitas recrear tu archivo de copia de seguridad. Debes usar el nombre exacto del archivo de copia de seguridad anterior: tar -czvf yourbackupfile.tar.gz uploads/ dump.sql.gz.
En tu FTP, ve a /var/discourse/shared/standalone/backups/default/, elimina la copia de seguridad dañada o muévela a otra carpeta.
Mueve el nuevo archivo de copia de seguridad a /var/discourse/shared/standalone/backups/default/.
Restaura la copia de seguridad. Prefiero usar este método, y si llegaste hasta aquí, deberías poder usarlo fácilmente: Restore a backup from the command line
La restauración de la copia de seguridad debería tener éxito