3

我正在 Windows Azure 上部署我的 Django 项目。我使用 SQLite 作为数据库服务器,一切正常。当我部署我的项目时,我决定将它与 SQL Azure 数据库连接,但似乎这个解决方案产生了一些错误。我不再能够编辑用户个人资料。我总是得到这个错误:

AttributeError at /admin/auth/user/1/
'unicode' object has no attribute 'tzinfo' 
4

2 回答 2

4

当您的数据库包含如下日期时间戳时会发生此错误:

0000-00-00 00:00:00.000000

(如果您使用 MySQLWorkbench 删除或覆盖以前的日期,这可能会在 MySQL 中发生)

当您尝试在 Django 模型对象中检索这些记录时,您将从pytz时区库中得到一个异常:

AttributeError 'unicode' object has no attribute 'tzinfo'

您应该首先在数据库中编辑这些日期,并将它们设置为较近的日期,例如2018-01-01 00:00:00.000000或设置为NULL(但不是空白)。

看:

也可以看看:

于 2018-05-09T15:16:24.963 回答
2

我在尝试将django-pyodbc-azure数据库后端与 Django (1.5.1) 一起使用时遇到了同样的问题:默认情况下,它将DateTimeField字段存储在您的数据库中datetime2(7),这在 Django 中似乎仍然不受支持。就我而言,我在 中添加了选项'use_legacy_datetime' : Truesettings.py如下所示:

DATABASES = {
    'default': {
        'ENGINE' : 'sql_server.pyodbc',
        'NAME' : '<MYDBNAME>',
        'USER': '<MYDBUSER>',
        'PASSWORD': '<MYDBPWD>',
        'HOST': '<MYHOST>',
        'OPTIONS': {
            'use_mars': True,
            'use_legacy_datetime' : True, # I added this line
        },
    },
}

我在这里找到了我的解决方案。我不太了解 Azure 平台,所以我不知道这是否正是你的情况,如果不是,你仍然可以修改你的数据库,用datetime2(N)旧的字段替换字段datetime

希望能帮助到你。

于 2013-07-16T14:52:37.590 回答