Django未能在登录后将记录插入会话

2024-09-29 22:29:42 发布

您现在位置:Python中文网/ 问答频道 /正文

Django failed to insert record into session after login with message:
--------------------------------------------------------------------
DatabaseError at /admin/
(-2147352567, 'Exception occurred.', (0, u'Microsoft OLE DB Provider for SQL Server', u'Conversion failed when converting date and/or time from character string.', None, 0, -2147217913), None)

Command:
INSERT INTO [django_session] ([session_key], [session_data], [expire_date]) VALUES (?, ?, ?)

Parameters:
[Name: p0, Dir.: Input, Type: adBSTR, Size: 32, Value: "orctnepzkaqb4haa6tn7jjit961a4l3s", Precision: 0, NumericScale: 0, Name: p1, Dir.: Input, Type: adBSTR, Size: 60, Value: "M2FiMTM4NGJmNjY4NDc2YjA0Y2I1ZjI4NDcxYzNlNTExYTljODYxMTp7fQ==", Precision: 0, NumericScale: 0, Name: p2, Dir.: Input, Type: adBSTR, Size: 26, Value: "2014-12-30T12:38:53.076000", Precision: 0, NumericScale: 0]
--------------------------------------------------------------------

如果你看2014-12-30T12:38:53.076000的日期,可以看出毫秒是由6位数字组成的。在

直接插入具有相同参数的数据库将返回相同的转换错误。在

如果将毫秒截断到3个字符,则插入操作将正常进行。在

django在何时何地以这种格式创建日期?在

此错误仅在生产环境中发生。 Python 2.7,Django 1.6.8,操作系统:Windows Server 2008R2,web服务器:IIS 7,DB服务器:MS SQL 2008R2


Tags: djangonameinputdbsqlsizeservervalue
2条回答

DATETIME_INPUT_格式不能解决问题,因为来自“时区”的“now”函数以微秒返回时间。 我对函数进行了更改:

   if settings.USE_TZ:
        # timeit shows that datetime.now(tz=utc) is 24% slower
        return datetime.utcnow().replace(tzinfo=utc, microsecond=0)
    else:
        return datetime.now().replace(microsecond=0)

您可以在设置.py在

more in docs

尝试类似于:

DATETIME_INPUT_FORMATS = (
    '%Y-%m-%d %H:%M:%S',   
)

相关问题 更多 >

    热门问题