Postgres & Django - DataError: часовой пояс не распознан - PullRequest
2 голосов
/ 04 июля 2019

Мы получаем следующую ошибку от некоторых наших пользователей:

DataError: time zone "Asia/Qostanay" not recognized

Мы обнаружили, что проблема была в следующем запросе SQL:

SELECT * 
FROM "app_foobar" 
WHERE (
    EXTRACT('hour' FROM "app_foobar"."date" AT TIME ZONE 'Asia/Qostanay') = 0
);

1 Ответ

3 голосов
/ 04 июля 2019

Есть две проблемы:

  1. Определения часовых поясов меняются со временем. Обновите данные часового пояса Ubuntu:
sudo apt-get update
sudo apt-get install tzdata
  1. Postgres 11.1 не поддерживает этот часовой пояс (и некоторые другие). Обновление Postgres до 11.4:
sudo apt-get update
sudo apt-get install postgres-11
sudo apt-get install postgres-client-11

Некоторые примечания по обновлению Postgres:

  1. Для вспомогательных версий миграция данных не требуется (например, 11.0 -> 11.4). Обновлены только исполняемые файлы.
  2. PostgreSQL будет перезапущен (база данных будет недоступна в течение секунды или двух)

Соответствующий журнал изменений postgresql (https://www.postgresql.org/docs/release/11.2/):

Обновление файлов данных часового пояса до выпуска tzdata 2018i для изменений в законодательстве о летнем времени в Казахстане, Метлакатле, Сан-Томе и Принсипи. Кызылординская зона Казахстана разделена на две части, создав новую зону Азия / Костанай, так как некоторые районы не изменили смещение UTC. Исторические исправления для Гонконга и многочисленных островов Тихого океана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...