Обновление на ARM (aarch64) с нестандартной локалью
Я только что потратил время на исправление сбоя при обновлении на одном сервере с двумя контейнерами.
- Его процессор — ARM.
- Discourse был настроен с локалью
en_UK.UTF-8.
Пошагово я выяснил следующее:
tianon/postgres-upgrade:13-to-15не работает на ARM.- Настройка локали хранится в файле
share/${CONTAINER}/postgres_data/postgresql.conf.
Я начал с закомментирования части env: в контейнере данных, чтобы убедиться, что используются локали по умолчанию.
Таким образом, чтобы выбраться из хаоса обновления, я предпринял опасный шаг, предположив, что различия в сортировке между en_GB и en_US незначительны, и безжалостно обновил весь кластер до en_US:
UPDATE pg_database SET datctype='en_US.UTF-8', datcollate='en_US.UTF-8';
Я не уверен, что этот шаг необходим, YMMV. Оставляю это здесь для более сведущих людей, чтобы они высказались, и я категорически не рекомендую делать это для других языков!
Затем я заменил локаль в postgresql.conf:
sed -i -e 's/en_GB/en_US/g' shared/data/postgres_data/postgresql.conf
sudo -H -u discourse ./launcher rebuild data
...
ОБНОВЛЕНИЕ POSTGRES ЗАВЕРШЕНО
![]()
Не думайте, что это было легко: я даже не упоминаю долгий путь изучения вариантов, особенно потому, что когда я вмешался, административный интерфейс был недоступен, а последнее резервное копирование было выполнено 6 дней назад. Мне пришлось повозиться, прежде чем я смог прийти к правильному — или, по крайней мере, рабочему — решению.
Надеюсь, это сэкономит кому-то время.