Falha ao migrar padrão
#<StandardError: Ocorreu um erro, todas as migrações posteriores foram canceladas:
PG::UniqueViolation: ERRO: a chave duplicada viola a restrição de chave exclusiva "index_user_emails_on_email"
DETALHE: A chave (lower(email::text))=(talk@remobjects.com<mailto:talk@remobjects.com) já existe.
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-2.3.3/lib/patches/db/pg.rb:110:in `exec'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-2.3.3/lib/patches/db/pg.rb:110:in `async_exec'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_adapters/postgresql/database_st
== 20211201221028 MigrateEmailToNormalizedEmail: migrando ====================
-- execute("UPDATE user_emails\nSET normalized_email = REPLACE(REGEXP_REPLACE(email,'([+@].*)',''),'.','') || REGEXP_REPLACE(email, '[^@]*', '')\nWHERE (normalized_email IS NULL OR normalized_email <> (REPLACE(REGEXP_REPLACE(email,'([+@].*)',''),'.','') || REGEXP_REPLACE(email, '[^@]*', '')))\n AND (id >= -2 AND id < 7155)\n")
Migrando secondsite
Docker Manager: FALHA AO ATUALIZAR
#<RuntimeError: RuntimeError>
Oh… nós já vimos isso antes em atualizações de versão principal do PG. O @saj trabalhou recentemente em algo aqui.
A longa história é que em algumas atualizações do PG, a collation do banco de dados muda por baixo dos panos e devido a mudanças na libc. Você não tem escolha a não ser reindexar.
O que aconteceu com você foi que:
Você fez uma atualização principal
Seu índice ficou um tanto corrompido
Uma segunda inserção de um usuário para talk@remobjects.com foi feita - você agora tem uma linha duplicada, apesar do índice não permitir.
Nós tocamos na linha e isso destaca esse problema, pois não podemos atualizar uma coluna não relacionada.
Correção é:
Encontre os IDs dos 2 usuários que compartilham o e-mail talk@remobjects.com.
Exclua ou renomeie o e-mail em um deles.
Prossiga como planejado.
Faça uma reindexação completa do banco de dados urgentemente para capturar outros problemas.
Sua solução resolveu o problema, mas o “upgrade” já passou (e não há mais atualizações); preciso fazer algo especial para reexecutar essas migrações? Eu, é claro, deletei os e-mails duplicados.