При миграции "make_aware ожидает наивное время даты".
Я разработал приложение на Django. Оно прекрасно работает на моем компьютере с sqlite бэкендом.
Но когда я пытаюсь начать работу с сервером linux и бэкендом mysql, я получаю следующую ошибку при первой миграции.
В настройках-
USE_TZ = True
Я выполнил mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
также как django doc.
Я использую django 4.1.3 и mysql community 8.0.30
Заранее спасибо.
Столкнулся с той же проблемой. В какой-то момент django предполагает, что данные не зависят от часового пояса без проверки. Вот обходной путь.
Обновите функцию make_aware, которая указана в вашем стек-трассе здесь:
/var/www/bulkmailer-folder/env-bulkmailer/lib64/python3.9/site-packages/django/utils/timezone.py", line 291, in make_aware
Вместо того, чтобы выдавать ошибку, если значение уже известно, просто верните известное значение. Смотрите последний оператор else ниже.
def make_aware(value, timezone=None, is_dst=NOT_PASSED):
"""Make a naive datetime.datetime in a given time zone aware."""
if is_dst is NOT_PASSED:
is_dst = None
else:
warnings.warn(
"The is_dst argument to make_aware(), used by the Trunc() "
"database functions and QuerySet.datetimes(), is deprecated as it "
"has no effect with zoneinfo time zones.",
RemovedInDjango50Warning,
)
if timezone is None:
timezone = get_current_timezone()
if _is_pytz_zone(timezone):
# This method is available for pytz time zones.
return timezone.localize(value, is_dst=is_dst)
else:
# Check that we won't overwrite the timezone of an aware datetime.
if is_aware(value):
# ADD THIS
return value
# REMOVE THE FOLLOWING LINE
# raise ValueError("make_aware expects a naive datetime, got %s" % value)
# This may be wrong around DST changes!
return value.replace(tzinfo=timezone)