我想使用以下URL查看档案:
example.com/2019/06
example.com/2018/11
但是,访问后,
django.db.utils.ProgrammingError: (1146, "Table 'mysql.time_zone' doesn't exist")
返回。
如果我将settings.py中的USE_TZ
更改为False
,错误消失了,我可以正常访问它,但是我不想为False。
urls.py
path('<int:year>/<int:month>', ArchiveList.as_view(month_format='%m'), name='archive_list'),
views.py
class ArchiveList(MonthArchiveView):
model = BlogPost
template_name = 'blog/post_list.html'
date_field = 'created_date'
month_format = '%m'
year_format = '%Y'
allow_future = True
def get_month(self):
month = super(ArchiveList, self).get_month()
return month
def get_year(self):
year = super(ArchiveList, self).get_year()
return year
models.py
class BlogPost(models.Model, HitCountMixin):
author = models.ForeignKey('auth.User', blank=False, on_delete=models.CASCADE)
main_image = FileBrowseField("mainimage", max_length=200, directory="media/uploads/thumbnail/",
extensions=[".jpg", ".png"], blank=False, null=True)
category = models.ForeignKey('SubCategory', verbose_name='category', default=3, on_delete=models.PROTECT)
title = models.CharField(max_length=33, blank=False)
description = models.TextField(max_length=108, default='', blank=False)
content = FroalaField(default='', blank=False, null=False)
created_date = models.DateTimeField(default=timezone.now, blank=False)
published_date = models.DateTimeField(blank=True, null=True)
is_public = models.BooleanField(default=True)
hit_count_generic = GenericRelation(
HitCount, object_id_field='object_pk',
related_query_name='hit_count_generic_relation')
settings.py
USE_I18N = True
USE_L10N = True
USE_TZ = True
我现在该怎么办?
答案 0 :(得分:0)
解决了! 原因是mysql的时区不是UTC。
首先,检查time_zone。
mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | JST |
| time_zone | SYSTEM |
+------------------+--------+
2 rows in set (0.00 sec)
如果不是UTC,请先阅读时区信息。
$ mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
并将这些信息写入~/etc/my.cnf
[mysqld_safe]
timezone = UTC
[mysqld]
default_time_zone = UTC
然后重新启动mysql并完成!
$ mysql.server restart
Shutting down MySQL
.. SUCCESS!
Starting MySQL
. SUCCESS!