Обновление с версии 2.9.0.beta2 до 2.9.0.beta4 завершилось ошибкой: PG::DuplicateColumn: ERROR: column "bookmarkable_id" отношения "bookmarks" уже существует. Рекомендации из Recovering from failed/partially applied upgrade помогли мне снова поднять сервис. Я создаю новую тему, так как эта проблема, похоже, специфична для (запущенного в Docker) многосайтового развертывания.
Проблема, судя по всему, в том, что задача multisite:migrate пытается выполнить ту же миграцию, которая уже была выполнена ранее в рамках других миграций. Результатом стала ошибка PG::DuplicateColumn: ERROR: column "bookmarkable_id" отношения "bookmarks" уже существует. Исходя из сообщения об ошибке, это может быть связано с функцией полиморфных закладок, DEV: Re-add polymorphic bookmark columns by martin-brennan · Pull Request #16261 · discourse/discourse · GitHub (обращаюсь к @martin?).
После возникновения проблемы моим быстрым и неидеальным решением стало:
Закомментировать строку - exec: cd /var/www/discourse && sudo -E -u discourse bundle exec rake multisite:migrate в конфигурационном файле containers/web_only.yml.
Вручную удалить частично примененные миграции, связанные с закладками: выполнить ./launcher enter data, зайти в обе базы данных Discourse через psql и запустить команду ALTER TABLE bookmarks DROP COLUMN bookmarkable_id, DROP COLUMN bookmarkable_type;.
Перезапустить процесс пересборки: ./launcher rebuild web_only 2>&1.
Чего мне может не хватать сейчас, когда multisite:migrate не был выполнен? Буду признателен за любые мысли. Оба сайта, впрочем, работают.
Есть какие-то мысли, зачем это нужно? Или подсказки, чего ожидать от запуска миграции для мультисайта? Дело в том, что я не люблю запускать скрипты, которые не понимаю.
Потому что вы хотя бы примерно знаете, как это исправить, а к следующему обновлению (если вы хоть немного похожи на меня) вы об этом совершенно забудете. Я почти уверен, что это сработает, так как, насколько я знаю, другие сталкивались с тем же, когда решали эту проблему.