Erro de cadastro: PG::UniqueViolation (ERRO: violação de chave duplicada viola restrição única

Hello! No changes were made on the site.

New users started reporting about this error:

PG::UniqueViolation (ERROR: duplicate key value violates unique constraint "idx_category_users_category_id_user_id" DETAIL: Key (category_id, user_id)=(55, 1691) already exists. ) app/models/user.rb

In details:

Message (2 copies reported)

PG::UniqueViolation (ERROR:  duplicate key value violates unique constraint "idx_category_users_category_id_user_id"
DETAIL:  Key (category_id, user_id)=(55, 1691) already exists.
)
app/models/user.rb:1499:in `set_default_categories_preferences'
app/controllers/users_controller.rb:629:in `create'
app/controllers/application_controller.rb:358:in `block in with_resolved_locale'
app/controllers/application_controller.rb:358:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:68:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:354:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:22:in `call'
lib/middleware/request_tracker.rb:176:in `call'

Backtrace

rack-mini-profiler (2.2.0) lib/patches/db/pg.rb:110:in `exec'
rack-mini-profiler (2.2.0) lib/patches/db/pg.rb:110:in `async_exec'
mini_sql (0.3) lib/mini_sql/postgres/connection.rb:201:in `run'
mini_sql (0.3) lib/mini_sql/postgres/connection.rb:173:in `exec'
app/models/user.rb:1499:in `set_default_categories_preferences'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:428:in `block in make_lambda'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:238:in `block in halting_and_conditional'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:517:in `block in invoke_after'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:517:in `each'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:517:in `invoke_after'

Env
rack-mini-profiler (2.2.0) lib/patches/db/pg.rb:110:in `exec'

rack-mini-profiler (2.2.0) lib/patches/db/pg.rb:110:in `async_exec'

mini_sql (0.3) lib/mini_sql/postgres/connection.rb:201:in `run'

mini_sql (0.3) lib/mini_sql/postgres/connection.rb:173:in `exec'

app/models/user.rb:1499:in `set_default_categories_preferences'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:428:in `block in make_lambda'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:238:in `block in halting_and_conditional'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:517:in `block in invoke_after'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:517:in `each'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:517:in `invoke_after'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:136:in `run_callbacks'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:825:in `_run_create_callbacks'

activerecord (6.0.3.3) lib/active_record/callbacks.rb:331:in `_create_record'

activerecord (6.0.3.3) lib/active_record/timestamp.rb:110:in `_create_record'

activerecord (6.0.3.3) lib/active_record/persistence.rb:905:in `create_or_update'

activerecord (6.0.3.3) lib/active_record/callbacks.rb:327:in `block in create_or_update'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:135:in `run_callbacks'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:825:in `_run_save_callbacks'

activerecord (6.0.3.3) lib/active_record/callbacks.rb:327:in `create_or_update'

activerecord (6.0.3.3) lib/active_record/timestamp.rb:128:in `create_or_update'

activerecord (6.0.3.3) lib/active_record/persistence.rb:470:in `save'

activerecord (6.0.3.3) lib/active_record/validations.rb:47:in `save'

activerecord (6.0.3.3) lib/active_record/transactions.rb:314:in `block in save'

activerecord (6.0.3.3) lib/active_record/transactions.rb:375:in `block in with_transaction_returning_status'

activerecord (6.0.3.3) lib/active_record/connection_adapters/abstract/database_statements.rb:280:in `block in transaction'

activerecord (6.0.3.3) lib/active_record/connection_adapters/abstract/transaction.rb:280:in `block in within_new_transaction'

activesupport (6.0.3.3) lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'

activesupport (6.0.3.3) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'

activesupport (6.0.3.3) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'

activesupport (6.0.3.3) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'

activesupport (6.0.3.3) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'

activerecord (6.0.3.3) lib/active_record/connection_adapters/abstract/transaction.rb:278:in `within_new_transaction'

activerecord (6.0.3.3) lib/active_record/connection_adapters/abstract/database_statements.rb:280:in `transaction'

activerecord (6.0.3.3) lib/active_record/transactions.rb:212:in `transaction'

activerecord (6.0.3.3) lib/active_record/transactions.rb:366:in `with_transaction_returning_status'

activerecord (6.0.3.3) lib/active_record/transactions.rb:314:in `save'

activerecord (6.0.3.3) lib/active_record/suppressor.rb:44:in `save'

app/controllers/users_controller.rb:629:in `create'

actionpack (6.0.3.3) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'

actionpack (6.0.3.3) lib/abstract_controller/base.rb:195:in `process_action'

actionpack (6.0.3.3) lib/action_controller/metal/rendering.rb:30:in `process_action'

actionpack (6.0.3.3) lib/abstract_controller/callbacks.rb:42:in `block in process_action'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:112:in `block in run_callbacks'

app/controllers/application_controller.rb:358:in `block in with_resolved_locale'

i18n (1.8.5) lib/i18n.rb:313:in `with_locale'

app/controllers/application_controller.rb:358:in `with_resolved_locale'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:121:in `block in run_callbacks'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:139:in `run_callbacks'

actionpack (6.0.3.3) lib/abstract_controller/callbacks.rb:41:in `process_action'

actionpack (6.0.3.3) lib/action_controller/metal/rescue.rb:22:in `process_action'

actionpack (6.0.3.3) lib/action_controller/metal/instrumentation.rb:33:in `block in process_action'

activesupport (6.0.3.3) lib/active_support/notifications.rb:180:in `block in instrument'

activesupport (6.0.3.3) lib/active_support/notifications/instrumenter.rb:24:in `instrument'

activesupport (6.0.3.3) lib/active_support/notifications.rb:180:in `instrument'

actionpack (6.0.3.3) lib/action_controller/metal/instrumentation.rb:32:in `process_action'

actionpack (6.0.3.3) lib/action_controller/metal/params_wrapper.rb:245:in `process_action'

activerecord (6.0.3.3) lib/active_record/railties/controller_runtime.rb:27:in `process_action'

actionpack (6.0.3.3) lib/abstract_controller/base.rb:136:in `process'

actionview (6.0.3.3) lib/action_view/rendering.rb:39:in `process'

rack-mini-profiler (2.2.0) lib/mini_profiler/profiling_methods.rb:85:in `block in profile_method'

actionpack (6.0.3.3) lib/action_controller/metal.rb:190:in `dispatch'

actionpack (6.0.3.3) lib/action_controller/metal.rb:254:in `dispatch'

actionpack (6.0.3.3) lib/action_dispatch/routing/route_set.rb:50:in `dispatch'

actionpack (6.0.3.3) lib/action_dispatch/routing/route_set.rb:33:in `serve'

actionpack (6.0.3.3) lib/action_dispatch/journey/router.rb:49:in `block in serve'

actionpack (6.0.3.3) lib/action_dispatch/journey/router.rb:32:in `each'

actionpack (6.0.3.3) lib/action_dispatch/journey/router.rb:32:in `serve'

actionpack (6.0.3.3) lib/action_dispatch/routing/route_set.rb:834:in `call'

lib/middleware/omniauth_bypass_middleware.rb:68:in `call'

rack (2.2.3) lib/rack/tempfile_reaper.rb:15:in `call'

rack (2.2.3) lib/rack/conditional_get.rb:40:in `call'

rack (2.2.3) lib/rack/head.rb:12:in `call'

lib/content_security_policy/middleware.rb:12:in `call'

lib/middleware/anonymous_cache.rb:354:in `call'

rack (2.2.3) lib/rack/session/abstract/id.rb:266:in `context'

rack (2.2.3) lib/rack/session/abstract/id.rb:260:in `call'

actionpack (6.0.3.3) lib/action_dispatch/middleware/cookies.rb:648:in `call'

actionpack (6.0.3.3) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:101:in `run_callbacks'

actionpack (6.0.3.3) lib/action_dispatch/middleware/callbacks.rb:26:in `call'

actionpack (6.0.3.3) lib/action_dispatch/middleware/actionable_exceptions.rb:17:in `call'

actionpack (6.0.3.3) lib/action_dispatch/middleware/debug_exceptions.rb:32:in `call'

actionpack (6.0.3.3) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'

logster (2.9.4) lib/logster/middleware/reporter.rb:43:in `call'

railties (6.0.3.3) lib/rails/rack/logger.rb:37:in `call_app'

railties (6.0.3.3) lib/rails/rack/logger.rb:28:in `call'

config/initializers/100-quiet_logger.rb:23:in `call'

config/initializers/100-silence_logger.rb:31:in `call'

actionpack (6.0.3.3) lib/action_dispatch/middleware/remote_ip.rb:81:in `call'

actionpack (6.0.3.3) lib/action_dispatch/middleware/request_id.rb:27:in `call'

lib/middleware/enforce_hostname.rb:22:in `call'

rack (2.2.3) lib/rack/method_override.rb:24:in `call'

actionpack (6.0.3.3) lib/action_dispatch/middleware/executor.rb:14:in `call'

rack (2.2.3) lib/rack/sendfile.rb:110:in `call'

actionpack (6.0.3.3) lib/action_dispatch/middleware/host_authorization.rb:76:in `call'

rack-mini-profiler (2.2.0) lib/mini_profiler/profiler.rb:246:in `call'

message_bus (3.3.4) lib/message_bus/rack/middleware.rb:61:in `call'

lib/middleware/request_tracker.rb:176:in `call'

railties (6.0.3.3) lib/rails/engine.rb:527:in `call'

railties (6.0.3.3) lib/rails/railtie.rb:190:in `public_send'

railties (6.0.3.3) lib/rails/railtie.rb:190:in `method_missing'

rack (2.2.3) lib/rack/urlmap.rb:74:in `block in call'

rack (2.2.3) lib/rack/urlmap.rb:58:in `each'

rack (2.2.3) lib/rack/urlmap.rb:58:in `call'

unicorn (5.7.0) lib/unicorn/http_server.rb:632:in `process_client'

unicorn (5.7.0) lib/unicorn/http_server.rb:728:in `worker_loop'

unicorn (5.7.0) lib/unicorn/http_server.rb:548:in `spawn_missing_workers'

unicorn (5.7.0) lib/unicorn/http_server.rb:144:in `start'

unicorn (5.7.0) bin/unicorn:128:in `<top (required)>'

vendor/bundle/ruby/2.7.0/bin/unicorn:23:in `load'

vendor/bundle/ruby/2.7.0/bin/unicorn:23:in `<main>'

I’m on the latest version of Discourse.

Please, help me to fix it.

Parece que seus grupos de acompanhamento automático têm um duplicado. Não tenho certeza de como isso é possível, mas você poderia tentar redefinir a configuração do site para acompanhamento automático?

4 curtidas

Prezado Sam, você é ótimo!

Eu mesmo causei esse problema. Defini uma categoria de acompanhamento padrão para usuários com Trust_level_0. Isso gerou um problema e as inscrições falharam. Então, excluí a categoria acompanhada para esse grupo e agora as inscrições estão funcionando.

3 curtidas

Fiz o mesmo e estou enfrentando o mesmo problema. Novos registros não estão sendo possíveis.

Mas não estamos usando o recurso da maneira correta? Quero que novos usuários acompanhem instantaneamente uma determinada categoria.
Como posso realizar isso?

Não, não descobri como fazer isso. Talvez seja possível com grupos? Adicionar novos usuários automaticamente a um grupo específico por padrão e configurar esse grupo para acompanhar uma determinada tag ou categoria.

É estranho para mim que não possamos fazer isso com níveis de confiança.

Me avise se conseguir fazer isso com um grupo.

O problema foi corrigido pelos commits abaixo

2 curtidas