Ontem à noite, tive um problema enorme em um fórum e precisei recriar tudo. Mas durante a restauração, ocorreu um erro e ela falhou. Aqui está a mensagem de erro:
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.
Acho que isso pode estar relacionado ao login com o Twitter, mas será que a restauração pode alterar um nome username_lower se ele estiver duplicado? Acredito que não seria possível alterar isso no arquivo SQL (que é bem grande) e fazer o upload novamente.
Era um problema diferente: o servidor não conseguiu acessar o pups.git. Não foi possível resolver o host: github.com. Tentei algumas soluções encontradas ontem à noite, mas não funcionaram.
Com a restauração, acho que o problema afeta apenas um usuário (talvez relacionado à criação de conta com um clique via Twitter ou algo assim). Estou tentando corrigir manualmente, mas gerenciar um arquivo SQL de 1 GB não é ideal.
edição: com o software vim, consegui editar o arquivo SQL e encontrei as linhas corretas. A restauração funcionou. Só preciso refazer tudo e deverá estar tudo certo.
Havia um nome de usuário “Lea” e outro “lea”. É estranho que o Discourse tenha permitido isso. É um fórum bastante antigo (junho de 2014) e eu o atualizei com frequência, então talvez tenha sido devido a uma versão específica.
Sou péssimo em SQL. Para encontrar a tabela correta, pesquisei username_lower,. Isso me levou à tabela de usuários, então pesquisei por “lea”. Editei as duas entradas de Lea. Provavelmente era muito mais fácil, mas lembre-se: sou péssimo em SQL, especialmente quando os arquivos têm 1,5 GB. Salve o arquivo.
Comprima o dump.sql com o 7zip. Você deve ter um novo arquivo chamado: dump.sql.gz.
Crie uma nova pasta em /var/discourse/shared/standalone/backups/default/. Usei “test”.
Se você tiver uma boa conexão com a internet, faça upload da pasta uploads que você obteve ao descomprimir seu arquivo de backup e coloque a pasta em /var/discourse/shared/standalone/backups/default/test/.
6.1 Se você não tiver uma boa conexão como eu, precisará usar seu servidor. Anote o nome do seu arquivo de backup e use este comando: tar xvzf /var/discourse/shared/standalone/backups/default/yourbackupfile.tar.gz -C /var/discourse/shared/standalone/backups/default/test.
6.2 Na pasta test, você terá um arquivo dump.sql.gz e uma pasta uploads. Está tudo certo.
Faça upload do arquivo dump.sql.gz da sua pasta test para substituir o dump.sql.gz quebrado.
No seu servidor: vá para cd /var/discourse/shared/standalone/backups/default/test.
Você precisa recriar seu arquivo de backup. Use o nome exato do arquivo de backup antigo: tar -czvf yourbackupfile.tar.gz uploads/ dump.sql.gz.
No seu FTP, vá para /var/discourse/shared/standalone/backups/default/, delete o backup quebrado ou mova-o para outra pasta.
Mova o novo arquivo de backup para /var/discourse/shared/standalone/backups/default/.