Ошибка PG при перестроении: колонка «token» отношения «email_tokens» не существует

Получено:

2021-12-13 08:57:12.809 UTC [902] discourse@discourse ERROR:  столбец "token" отношения "email_tokens" не существует
2021-12-13 08:57:12.809 UTC [902] discourse@discourse STATEMENT:  ALTER TABLE email_tokens ALTER COLUMN token DROP NOT NULL

rake aborted!
StandardError: Произошла ошибка, все последующие миграции отменены:

PG::UndefinedColumn: ERROR:  столбец "token" отношения "email_tokens" не существует

Связано с?:

У нас тоже возникла эта проблема.

На данный момент нам удалось запустить старый контейнер с помощью команды ./launcher start app после неудачного пересоздания, но мы не знаем, находится ли наша база данных в согласованном состоянии, поскольку сбой произошел на полпути миграции.

Для нашего спокойствия известно ли, полностью ли откатывается миграция базы данных при возникновении такого сбоя?

У меня та же ситуация, возвращаю резервную копию за 8 часов.

Звучит как баг. Не думаю, что у вас установлен параметр SKIP_POST_DEPLOYMENT_MIGRATIONS, верно?

Или, возможно, в качестве обходного пути вы можете установить его в значение 1 в файле app.yml, запустить пересборку, а затем либо вернуть его обратно и снова выполнить обновление, либо внутри контейнера установить его в ноль и выполнить миграцию через командную строку.

Спасибо за предложение, Джей, но, похоже, в app.yml этот параметр не установлен.

Пожалуйста, если у вас возникла эта проблема, попробуйте выполнить следующее в консоли Rails и поделитесь результатом:

./launcher enter app
rails c

DB.query "SELECT table_schema, table_name, column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='email_tokens' AND column_name='token';"

Посмотрите, пожалуйста.
Похоже, что при каждой пересборке возникает эта ошибка.

Отлично, спасибо @aksoforever — это подтверждает мои подозрения. Думаю, этот PR решит проблему:

После пересборки ошибка всё ещё сохраняется

Похоже, нужно пересобрать ещё раз, давайте попробую.

На то, чтобы этот коммит попал в ветку tests-passed, уйдёт 10–15 минут. Как только всё будет готово, я напишу здесь.

Хорошо, этот коммит теперь доступен в tests-passed

cc @aksoforever @merefield @alexsts @AquaL1te @pfaffman @TechGeek — сейчас должна сработать пересборка. Извините за неудобства!

Да, работает отлично. Спасибо, Дэвид.
Очень-очень полезно.

О, отлично подмечено! Спасибо, Дэвид.