用户删除问题,删除所有帖子时返回“Error 500”

我遇到了一个问题,有一个用户请求删除他们的账户。在删除账户之前,在用户管理部分我尝试使用 Delete all posts(删除所有帖子)时,在确认操作后我收到了 Error 500(错误 500)。

目前我已经手动删除了我能找到的帖子,因为该用户的帖子数量很少,所以没有问题。但我仍然看到该账户的 Posts created(创建的帖子)显示为 10+。当然,我也无法删除该账户。我也看不到该用户创建的更多帖子了。

/logs 中,我看到了关于该事件(据我判断)的两个日志条目:

Message

ActiveRecord::InvalidForeignKey (PG::ForeignKeyViolation: ERROR:  update or delete on table "reviewables" violates foreign key constraint "fk_rails_2fe5fa5cd0" on table "reviewable_notes"
DETAIL:  Key (id)=(7064) is still referenced from table "reviewable_notes".
)
Message

Failed to handle exception in exception app middleware : ActiveRecord::InvalidForeignKey : PG::ForeignKeyViolation: ERROR:  update or delete on table "reviewables" violates foreign key constraint "fk_rails_2fe5fa5cd0" on table "reviewable_notes"
DETAIL:  Key (id)=(7064) is still referenced from table "reviewable_notes".


Backtrace

rack-mini-profiler-4.0.1/lib/patches/db/pg/alias_method.rb:109:in `exec'
rack-mini-profiler-4.0.1/lib/patches/db/pg/alias_method.rb:109:in `async_exec'
activerecord-8.0.4/lib/active_record/connection_adapters/postgresql/database_statements.rb:167:in `perform_query'
activerecord-8.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:556:in `block (2 levels) in raw_execute'
activerecord-8.0.4/lib/active_record/connection_adapters/abstract_adapter.rb:1017:in `block in with_raw_connection'
activesupport-8.0.4/lib/active_support/concurrency/null_lock.rb:9:in `synchronize'
activerecord-8.0.4/lib/active_record/connection_adapters/abstract_adapter.rb:986:in `with_raw_connection'
activerecord-8.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:555:in `block in raw_execute'
activesupport-8.0.4/lib/active_support/notifications/instrumenter.rb:58:in `instrument'
activerecord-8.0.4/lib/active_record/connection_adapters/abstract_adapter.rb:1137:in `log'
activerecord-8.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:554:in `raw_execute'
activerecord-8.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:591:in `internal_execute'
activerecord-8.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:166:in `exec_delete'
activerecord-8.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:214:in `delete'
activerecord-8.0.4/lib/active_record/connection_adapters/abstract/query_cache.rb:27:in `delete'
activerecord-8.0.4/lib/active_record/relation.rb:1045:in `block in delete_all'
activerecord-8.0.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:422:in `with_connection'
activerecord-8.0.4/lib/active_record/connection_handling.rb:312:in `with_connection'
activerecord-8.0.4/lib/active_record/relation.rb:1032:in `delete_all'
/var/www/discourse/app/models/user.rb:1322:in `delete_posts_in_batches'
/var/www/discourse/app/controllers/admin/users_controller.rb:76:in `delete_posts_batch'
actionpack-8.0.4/lib/action_controller/metal/basic_implicit_render.rb:8:in `send_action'
actionpack-8.0.4/lib/abstract_controller/base.rb:215:in `process_action'
actionpack-8.0.4/lib/action_controller/metal/rendering.rb:193:in `process_action'
actionpack-8.0.4/lib/abstract_controller/callbacks.rb:261:in `block in process_action'
activesupport-8.0.4/lib/active_support/callbacks.rb:120:in `block in run_callbacks'
/var/www/discourse/app/controllers/application_controller.rb:442:in `block in with_resolved_locale'
i18n-1.14.7/lib/i18n.rb:353:in `with_locale'
/var/www/discourse/app/controllers/application_controller.rb:442:in `with_resolved_locale'
activesupport-8.0.4/lib/active_support/callbacks.rb:129:in `block in run_callbacks'
/var/www/discourse/app/controllers/application_controller.rb:1088:in `ensure_dont_cache_page'
activesupport-8.0.4/lib/active_support/callbacks.rb:129:in `block in run_callbacks'
activesupport-8.0.4/lib/active_support/callbacks.rb:140:in `run_callbacks'
actionpack-8.0.4/lib/abstract_controller/callbacks.rb:260:in `process_action'
actionpack-8.0.4/lib/action_controller/metal/rescue.rb:27:in `process_action'
actionpack-8.0.4/lib/action_controller/metal/instrumentation.rb:76:in `block in process_action'
activesupport-8.0.4/lib/active_support/notifications.rb:210:in `block in instrument'
activesupport-8.0.4/lib/active_support/notifications/instrumenter.rb:58:in `instrument'
activesupport-8.0.4/lib/active_support/notifications.rb:210:in `instrument'
actionpack-8.0.4/lib/action_controller/metal/instrumentation.rb:75:in `process_action'
actionpack-8.0.4/lib/action_controller/metal/params_wrapper.rb:259:in `process_action'
activerecord-8.0.4/lib/active_record/railties/controller_runtime.rb:39:in `process_action'
actionpack-8.0.4/lib/abstract_controller/base.rb:152:in `process'
actionview-8.0.4/lib/action_view/rendering.rb:40:in `process'
rack-mini-profiler-4.0.1/lib/mini_profiler/profiling_methods.rb:90:in `block in profile_method'
actionpack-8.0.4/lib/action_controller/metal.rb:252:in `dispatch'
actionpack-8.0.4/lib/action_controller/metal.rb:335:in `dispatch'
actionpack-8.0.4/lib/action_dispatch/routing/route_set.rb:67:in `dispatch'
actionpack-8.0.4/lib/action_dispatch/routing/route_set.rb:50:in `serve'
actionpack-8.0.4/lib/action_dispatch/routing/mapper.rb:32:in `block in <class:Constraints>'
actionpack-8.0.4/lib/action_dispatch/routing/mapper.rb:62:in `serve'
actionpack-8.0.4/lib/action_dispatch/journey/router.rb:53:in `block in serve'
actionpack-8.0.4/lib/action_dispatch/journey/router.rb:133:in `block in find_routes'
actionpack-8.0.4/lib/action_dispatch/journey/router.rb:126:in `each'
actionpack-8.0.4/lib/action_dispatch/journey/router.rb:126:in `find_routes'
actionpack-8.0.4/lib/action_dispatch/journey/router.rb:34:in `serve'
actionpack-8.0.4/lib/action_dispatch/routing/route_set.rb:908:in `call'
/var/www/discourse/lib/middleware/omniauth_bypass_middleware.rb:35:in `call'
/var/www/discourse/lib/middleware/crawler_hooks.rb:11:in `call'
rack-2.2.21/lib/rack/tempfile_reaper.rb:15:in `call'
rack-2.2.21/lib/rack/conditional_get.rb:40:in `call'
rack-2.2.21/lib/rack/head.rb:12:in `call'
actionpack-8.0.4/lib/action_dispatch/middleware/permissions_policy.rb:38:in `call'
/var/www/discourse/lib/content_security_policy/middleware.rb:12:in `call'
/var/www/discourse/lib/middleware/anonymous_cache.rb:420:in `call'
/var/www/discourse/lib/middleware/csp_script_nonce_injector.rb:12:in `call'
/var/www/discourse/config/initializers/008-rack-cors.rb:14:in `call'
rack-2.2.21/lib/rack/session/abstract/id.rb:266:in `context'
rack-2.2.21/lib/rack/session/abstract/id.rb:260:in `call'
actionpack-8.0.4/lib/action_dispatch/middleware/cookies.rb:706:in `call'
actionpack-8.0.4/lib/action_dispatch/middleware/callbacks.rb:31:in `block in call'
activesupport-8.0.4/lib/active_support/callbacks.rb:100:in `run_callbacks'
actionpack-8.0.4/lib/action_dispatch/middleware/callbacks.rb:30:in `call'
actionpack-8.0.4/lib/action_dispatch/middleware/debug_exceptions.rb:31:in `call'
actionpack-8.0.4/lib/action_dispatch/middleware/show_exceptions.rb:32:in `call'
logster-2.20.1/lib/logster/middleware/reporter.rb:40:in `call'
/var/www/discourse/lib/middleware/default_headers.rb:13:in `call'
railties-8.0.4/lib/rails/rack/logger.rb:41:in `call_app'
railties-8.0.4/lib/rails/rack/logger.rb:29:in `call'
/var/www/discourse/config/initializers/100-quiet_logger.rb:20:in `call'
/var/www/discourse/config/initializers/100-silence_logger.rb:29:in `call'
actionpack-8.0.4/lib/action_dispatch/middleware/request_id.rb:34:in `call'
/var/www/discourse/lib/middleware/enforce_hostname.rb:23:in `call'
rack-2.2.21/lib/rack/method_override.rb:24:in `call'
actionpack-8.0.4/lib/action_dispatch/middleware/executor.rb:16:in `call'
rack-2.2.21/lib/rack/sendfile.rb:127:in `call'
rack-mini-profiler-4.0.1/lib/mini_profiler.rb:191:in `call'
message_bus-4.4.1/lib/message_bus/rack/middleware.rb:60:in `call'
/var/www/discourse/lib/middleware/request_tracker.rb:321:in `call'
actionpack-8.0.4/lib/action_dispatch/middleware/remote_ip.rb:96:in `call'
/var/www/discourse/lib/middleware/overload_protections.rb:22:in `call'
/var/www/discourse/lib/middleware/processing_request.rb:14:in `call'
railties-8.0.4/lib/rails/engine.rb:535:in `call'
railties-8.0.4/lib/rails/railtie.rb:226:in `public_send'
railties-8.0.4/lib/rails/railtie.rb:226:in `method_missing'
rack-2.2.21/lib/rack/urlmap.rb:74:in `block in call'
rack-2.2.21/lib/rack/urlmap.rb:58:in `each'
rack-2.2.21/lib/rack/urlmap.rb:58:in `call'
unicorn-6.1.0/lib/unicorn/http_server.rb:634:in `process_client'
unicorn-6.1.0/lib/unicorn/http_server.rb:739:in `worker_loop'
unicorn-6.1.0/lib/unicorn/http_server.rb:547:in `spawn_missing_workers'
unicorn-6.1.0/lib/unicorn/http_server.rb:143:in `start'
unicorn-6.1.0/bin/unicorn:128:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `load'
/var/www/discourse/vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `<main>'

这些 reviewable_notesreviewable_notes 表是什么?它们是否与版主的“Review”(审查)队列有关?

有人有什么评论或者遇到过类似的情况吗?

我认为这可能是一个最近引入的错误。

你能检查一下用户在审核队列中是否有任何标记的内容,以及是否有任何关于这些内容的备注吗?如果有,请先尝试删除它们,然后再继续。