Не удалось восстановить/обновить Discourse (PG::InvalidTextRepresentation: ОШИБКА: недопустимый синтаксис ввода для типа integer: "[]")

Привет!

У меня есть экземпляр, работающий на версии 2.9.0.beta4, и мне нужно было выполнить миграцию. Я сделал обычное резервное копирование и восстановление, но восстановление на новом экземпляре не удалось. Тогда я решил попробовать обновить исходный экземпляр, но и это не получилось. Оба процесса завершились ошибкой, по-видимому, по одной и той же причине, на этапе выполнения команды db:migrate.

Ошибка обновления: https://pastebin.com/raw/sQrnMe27
Ошибка восстановления: https://pastebin.com/raw/idWYmEFq

Спасибо за помощь!

Похоже, это может быть :bug:

На мой взгляд, это в ядре, но стандартный вопрос: у вас есть какие-либо нестандартные плагины?

Нет, это ванильная версия :slight_smile:

У меня была похожая ошибка на тестовом сайте, где в настройке сайта selectable_avatar содержались некорректные данные, и мне пришлось обновить её через консоль Rails.

Вы умеете пользоваться консолью Rails? Если да, пожалуйста, выполните этот запрос и посмотрите, что он вернёт:

SiteSetting.where(data_type:17)

Не уверен, что всё сделал правильно, но вот что у меня получилось:

=> #<ActiveRecord::Relation [#<SiteSetting id: 56, name: "selectable_avatars", data_type: 17, value: "[]", created_at: "2022-06-07 04:30:35.458837000 +0000", updated_at: "2022-06-08 08:14:54.196037000 +0000">]>

Думаю, вы сможете выполнить SiteSetting.selectable_avatars = "" (снова из консоли Rails), и тогда всё будет готово для пересборки.

В данный момент я пересобрал проект и успешно выполнил стрессовую команду миграции базы данных, так что, полагаю, эта проблема решена.
Спасибо вам обоим за быструю помощь!

Кажется, у вас получилось! Стоит проверить, удастся ли привлечь внимание к этому, так как я почти уверен, что миграция должна перенести эти выбираемые аватары в новый формат.

Да, и это работало во всех остальных случаях, которые мы видели. [] не является допустимым значением, даже в старом формате, поэтому этот конкретный случай довольно удивителен. Возможно, это осталось после какой-то ручной работы в консоли или из-за плохого импорта :thinking:

Если мы получим больше сообщений, мы обязательно добавим автоматическое исправление для этого случая.

Ах, точно. Обычно, когда я получаю такую ошибку, это потому, что я где-то ошибся и обращался к неправильной переменной или что-то в этом роде. Но, возможно, это было состояние, в котором всё осталось после удаления всех остальных. Хотя, честно говоря, я просто не уделял достаточно внимания. :wink:

Наши настройки «списка» представляют собой тонкий интерфейс поверх строк, разделенных вертикальной чертой, поэтому теоретически пустой список должен сохраняться как пустая строка. Но вы правы — возможно, кто-то пытался очистить список и случайно сделал что-то вроде этого:

pry(main)> SiteSetting.selectable_avatars = []
=> []
pry(main)> SiteSetting.selectable_avatars
=> "[]"

(это в старом формате. В новом формате есть валидации, которые предотвращают это, даже в консоли)

Что касается нашего случая, форум был настроен в начале этого месяца, и мы вообще не взаимодействовали с консолью (ни импортов не было). На самом деле, я сегодня впервые узнал о rails console :smile: