Unable to move posts between topics

AI-generated summary

The discussion is about an issue with moving posts between topics, resulting in a PG::UniqueViolation error. rtyhbfdvsd reported the error, which prevents posts from being moved across the entire install. The error is caused by a duplicate key value violating the unique constraint “post_timings_unique”. nat shared a fix that was recently merged in a GitHub pull request, which should resolve the issue. rtyhbfdvsd thanked nat for the update.

Hi, I’m trying to move posts between threads and keep getting this error. This error is preventing any posts across the entire install from being moved. If anyone has any suggestions I’d be extremely careful. Thanks for reading!

PG::UniqueViolation (ERROR:  duplicate key value violates unique constraint "post_timings_unique"
DETAIL:  Key (topic_id, post_number, user_id)=(4175, 6, 1074) already exists.
)
lib/mini_sql_multisite_connection.rb:109:in `run'
app/models/post_mover.rb:507:in `move_post_timings'
app/models/post_mover.rb:138:in `handle_moved_references'
app/models/post_mover.rb:108:in `move_posts_to'
app/models/post_mover.rb:35:in `block in to_topic'
app/models/post_mover.rb:35:in `to_topic'
app/models/topic.rb:1308:in `move_posts'
app/controllers/topics_controller.rb:1415:in `move_posts_to_destination'
app/controllers/topics_controller.rb:917:in `move_posts'
app/controllers/application_controller.rb:424:in `block in with_resolved_locale'
app/controllers/application_controller.rb:424:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:64:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:403:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:14:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/processing_request.rb:12:in `call'
lib/middleware/request_tracker.rb:360:in `call'

Backtrace

rack-mini-profiler (3.3.1) lib/patches/db/pg.rb:113:in `exec'
rack-mini-profiler (3.3.1) lib/patches/db/pg.rb:113:in `async_exec'
mini_sql (1.6.0) lib/mini_sql/postgres/connection.rb:217:in `run'
mini_sql (1.6.0) lib/mini_sql/active_record_postgres/connection.rb:38:in `block in run'
mini_sql (1.6.0) lib/mini_sql/active_record_postgres/connection.rb:34:in `block in with_lock'
activesupport (7.2.2) lib/active_support/concurrency/null_lock.rb:9:in `synchronize'
mini_sql (1.6.0) lib/mini_sql/active_record_postgres/connection.rb:34:in `with_lock'
mini_sql (1.6.0) lib/mini_sql/active_record_postgres/connection.rb:38:in `run'
lib/mini_sql_multisite_connection.rb:109:in `run'
mini_sql (1.6.0) lib/mini_sql/postgres/connection.rb:196:in `exec'
app/models/post_mover.rb:507:in `move_post_timings'
app/models/post_mover.rb:138:in `handle_moved_references'
app/models/post_mover.rb:108:in `move_posts_to'
app/models/post_mover.rb:35:in `block in to_topic'
activerecord (7.2.2) lib/active_record/connection_adapters/abstract/transaction.rb:616:in `block in within_new_transaction'
activesupport (7.2.2) lib/active_support/concurrency/null_lock.rb:9:in `synchronize'
activerecord (7.2.2) lib/active_record/connection_adapters/abstract/transaction.rb:613:in `within_new_transaction'
activerecord (7.2.2) lib/active_record/connection_adapters/abstract/database_statements.rb:361:in `transaction'
activerecord (7.2.2) lib/active_record/transactions.rb:234:in `block in transaction'
activerecord (7.2.2) lib/active_record/connection_adapters/abstract/connection_pool.rb:421:in `with_connection'
activerecord (7.2.2) lib/active_record/connection_handling.rb:296:in `with_connection'
activerecord (7.2.2) lib/active_record/transactions.rb:233:in `transaction'
app/models/post_mover.rb:35:in `to_topic'
app/models/topic.rb:1308:in `move_posts'
app/controllers/topics_controller.rb:1415:in `move_posts_to_destination'
app/controllers/topics_controller.rb:917:in `move_posts'
actionpack (7.2.2) lib/action_controller/metal/basic_implicit_render.rb:8:in `send_action'
actionpack (7.2.2) lib/abstract_controller/base.rb:226:in `process_action'
actionpack (7.2.2) lib/action_controller/metal/rendering.rb:193:in `process_action'
actionpack (7.2.2) lib/abstract_controller/callbacks.rb:261:in `block in process_action'
activesupport (7.2.2) lib/active_support/callbacks.rb:121:in `block in run_callbacks'
app/controllers/application_controller.rb:424:in `block in with_resolved_locale'
i18n (1.14.6) lib/i18n.rb:353:in `with_locale'
app/controllers/application_controller.rb:424:in `with_resolved_locale'
activesupport (7.2.2) lib/active_support/callbacks.rb:130:in `block in run_callbacks'
activesupport (7.2.2) lib/active_support/callbacks.rb:141:in `run_callbacks'
actionpack (7.2.2) lib/abstract_controller/callbacks.rb:260:in `process_action'
actionpack (7.2.2) lib/action_controller/metal/rescue.rb:27:in `process_action'
actionpack (7.2.2) lib/action_controller/metal/instrumentation.rb:77:in `block in process_action'
activesupport (7.2.2) lib/active_support/notifications.rb:210:in `block in instrument'
activesupport (7.2.2) lib/active_support/notifications/instrumenter.rb:58:in `instrument'
activesupport (7.2.2) lib/active_support/notifications.rb:210:in `instrument'
actionpack (7.2.2) lib/action_controller/metal/instrumentation.rb:76:in `process_action'
actionpack (7.2.2) lib/action_controller/metal/params_wrapper.rb:259:in `process_action'
activerecord (7.2.2) lib/active_record/railties/controller_runtime.rb:39:in `process_action'
actionpack (7.2.2) lib/abstract_controller/base.rb:163:in `process'
actionview (7.2.2) lib/action_view/rendering.rb:40:in `process'
rack-mini-profiler (3.3.1) lib/mini_profiler/profiling_methods.rb:115:in `block in profile_method'
actionpack (7.2.2) lib/action_controller/metal.rb:252:in `dispatch'
actionpack (7.2.2) lib/action_controller/metal.rb:335:in `dispatch'
actionpack (7.2.2) lib/action_dispatch/routing/route_set.rb:67:in `dispatch'
actionpack (7.2.2) lib/action_dispatch/routing/route_set.rb:50:in `serve'
actionpack (7.2.2) lib/action_dispatch/journey/router.rb:53:in `block in serve'
actionpack (7.2.2) lib/action_dispatch/journey/router.rb:133:in `block in find_routes'
actionpack (7.2.2) lib/action_dispatch/journey/router.rb:126:in `each'
actionpack (7.2.2) lib/action_dispatch/journey/router.rb:126:in `find_routes'
actionpack (7.2.2) lib/action_dispatch/journey/router.rb:34:in `serve'
actionpack (7.2.2) lib/action_dispatch/routing/route_set.rb:896:in `call'
lib/middleware/omniauth_bypass_middleware.rb:64:in `call'
rack (2.2.10) lib/rack/tempfile_reaper.rb:15:in `call'
rack (2.2.10) lib/rack/conditional_get.rb:40:in `call'
rack (2.2.10) lib/rack/head.rb:12:in `call'
actionpack (7.2.2) lib/action_dispatch/http/permissions_policy.rb:38:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:403:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:14:in `call'
rack (2.2.10) lib/rack/session/abstract/id.rb:266:in `context'
rack (2.2.10) lib/rack/session/abstract/id.rb:260:in `call'
actionpack (7.2.2) lib/action_dispatch/middleware/cookies.rb:704:in `call'
actionpack (7.2.2) lib/action_dispatch/middleware/callbacks.rb:31:in `block in call'
activesupport (7.2.2) lib/active_support/callbacks.rb:101:in `run_callbacks'
actionpack (7.2.2) lib/action_dispatch/middleware/callbacks.rb:30:in `call'
actionpack (7.2.2) lib/action_dispatch/middleware/debug_exceptions.rb:31:in `call'
actionpack (7.2.2) lib/action_dispatch/middleware/show_exceptions.rb:32:in `call'
logster (2.20.0) lib/logster/middleware/reporter.rb:40:in `call'
railties (7.2.2) lib/rails/rack/logger.rb:41:in `call_app'
railties (7.2.2) lib/rails/rack/logger.rb:29:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
actionpack (7.2.2) lib/action_dispatch/middleware/request_id.rb:33:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
rack (2.2.10) lib/rack/method_override.rb:24:in `call'
actionpack (7.2.2) lib/action_dispatch/middleware/executor.rb:16:in `call'
rack (2.2.10) lib/rack/sendfile.rb:110:in `call'
rack-mini-profiler (3.3.1) lib/mini_profiler.rb:334:in `call'
lib/middleware/processing_request.rb:12:in `call'
message_bus (4.3.8) lib/message_bus/rack/middleware.rb:60:in `call'
lib/middleware/request_tracker.rb:360:in `call'
actionpack (7.2.2) lib/action_dispatch/middleware/remote_ip.rb:96:in `call'
railties (7.2.2) lib/rails/engine.rb:535:in `call'
railties (7.2.2) lib/rails/railtie.rb:226:in `public_send'
railties (7.2.2) lib/rails/railtie.rb:226:in `method_missing'
rack (2.2.10) lib/rack/urlmap.rb:74:in `block in call'
rack (2.2.10) lib/rack/urlmap.rb:58:in `each'
rack (2.2.10) 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)>'
vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `load'
vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `<main>'

Env

HTTP HOSTS: forums.insertcredit.com

Hey great news, we have a fix that was just merged:

https://github.com/discourse/discourse/pull/30176

Not sure if you can upgrade your site right now, but this should allow you to get past that error.

7 Likes

Thank you!

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.