Проблема с восстановлением: функция "mirror_topic_timers_topic_id" уже существует с теми же типами аргументов

Я пытаюсь восстановить производственную базу данных из 04dbc622ab1e0197d16703ba47cf005ec93697ee на разработочный сайт f608e0cd7e7d4785b3ecb401999cfb837cfbe783

Получаю следующие ошибки:

Не удалось выполнить миграцию базы данных.                                                                                                                           [90/9045]
Игнорирую db/schema_cache.yml, так как срок его действия истек. Текущая версия схемы — 20250724012518, а в файле кэша схемы указана версия 20250916082012.
rake aborted!
StandardError: Произошла ошибка, эта и все последующие миграции отменены: (StandardError)

PG::DuplicateFunction: ОШИБКА: функция "mirror_topic_timers_topic_id" уже существует с теми же типами аргументов
/home/pfaffman/src/discourse-repos/discourse/lib/migration/safe_migrate.rb:107:in `async_exec'
/home/pfaffman/src/discourse-repos/discourse/db/migrate/20250902014817_add_timerable_id_to_topic_timer.rb:15:in `up'
/home/pfaffman/src/discourse-repos/discourse/lib/freedom_patches/schema_migration_details.rb:8:in `block in exec_migration'
/home/pfaffman/src/discourse-repos/discourse/lib/freedom_patches/schema_migration_details.rb:8:in `exec_migration'
/home/pfaffman/src/discourse-repos/discourse/lib/migration/safe_migrate.rb:28:in `migrate'
/home/pfaffman/src/discourse-repos/discourse/lib/migration/safe_migrate.rb:53:in `migrate'
/home/pfaffman/src/discourse-repos/discourse/lib/tasks/db.rake:267:in `block (2 levels) in <main>'
/home/pfaffman/src/discourse-repos/discourse/lib/distributed_mutex.rb:53:in `block in synchronize'
/home/pfaffman/src/discourse-repos/discourse/lib/distributed_mutex.rb:49:in `synchronize'
/home/pfaffman/src/discourse-repos/discourse/lib/distributed_mutex.rb:49:in `synchronize'
/home/pfaffman/src/discourse-repos/discourse/lib/distributed_mutex.rb:34:in `synchronize'
/home/pfaffman/src/discourse-repos/discourse/lib/tasks/db.rake:242:in `block in <main>'

Причина:
ActiveRecord::StatementInvalid: PG::DuplicateFunction: ОШИБКА: функция "mirror_topic_timers_topic_id" уже существует с теми же типами аргументов (ActiveRecord::StatementInvalid)
/home/pfaffman/src/discourse-repos/discourse/lib/migration/safe_migrate.rb:107:in `async_exec'
/home/pfaffman/src/discourse-repos/discourse/db/migrate/20250902014817_add_timerable_id_to_topic_timer.rb:15:in `up'
/home/pfaffman/src/discourse-repos/discourse/lib/freedom_patches/schema_migration_details.rb:8:in `block in exec_migration'
/home/pfaffman/src/discourse-repos/discourse/lib/freedom_patches/schema_migration_details.rb:8:in `exec_migration'
/home/pfaffman/src/discourse-repos/discourse/lib/migration/safe_migrate.rb:28:in `migrate'
/home/pfaffman/src/discourse-repos/discourse/lib/migration/safe_migrate.rb:53:in `migrate'
/home/pfaffman/src/discourse-repos/discourse/lib/tasks/db.rake:267:in `block (2 levels) in <main>'
/home/pfaffman/src/discourse-repos/discourse/lib/distributed_mutex.rb:53:in `block in synchronize'
/home/pfaffman/src/discourse-repos/discourse/lib/distributed_mutex.rb:49:in `synchronize'
/home/pfaffman/src/discourse-repos/discourse/lib/distributed_mutex.rb:49:in `synchronize'
/home/pfaffman/src/discourse-repos/discourse/lib/distributed_mutex.rb:34:in `synchronize'
/home/pfaffman/src/discourse-repos/discourse/lib/tasks/db.rake:242:in `block in <main>'

Думаю, это может быть связано с этим:

1 лайк

Та же проблема (1e42f55be0 to 452e5064c9).

1 лайк

Я посмотрю на это сегодня.

3 лайка

Безумие! Я только что закончил подготовку всего в своей dev-версии, это была моя первая настройка Discourse. Я как раз собирался импортировать её в только что установленную live-версию и столкнулся именно с этой ошибкой. И единственный результат в Google — это пост пятичасовой давности. Надеюсь, это исправят, и я смогу запустить проект.

1 лайк

Вы могли бы запустить проект с коммита, предшествующего указанному здесь.

Вам нужно удалить существующую базу данных, пересобрать проект с предыдущего коммита и, скорее всего, выполнить восстановление.

И 5 часов — это довольно хороший показатель для SEO.

Я открыл PR с исправлением и сейчас же инициирую его ревью.

5 лайков

И оно действительно было слито вскоре после его поста!

3 лайка

Эта тема была автоматически закрыта через 7 дней после последнего ответа. Новые ответы больше не принимаются.