【问题标题】:Query timeout expired in django-mssql when executing custom SQL directly直接执行自定义 SQL 时在 django-mssql 中查询超时
【发布时间】:2015-07-26 01:26:15
【问题描述】:

我正在查询一个视图,该视图将返回大量数据并且需要 1 分钟以上才能完成。

我正在使用 django.db.connection.cursor() 执行查询,因为这不是我的默认数据库。 30 秒后,我收到异常“查询超时已过期”。我认为 30 秒是 django-mssql 的默认超时。有没有办法增加超时时间或有其他方法。

无法处理 SQL 查询,因为它是由另一方实现的。只暴露了一个视图。

str(Exception) 是“(-2147352567, '发生异常。', (0, u'Microsoft OLE DB Provider for SQL Server', u'查询超时已过期', None, 0, -2147217871), None)"

【问题讨论】:

    标签: sql django django-mssql


    【解决方案1】:

    您可以在 django 设置文件中的数据库配置中调整 COMMAND_TIMEOUT。使用 COMMAND_TIMEOUT 的示例:

    DATABASES = {
    'default': {
        'NAME': DATABASE_NAME,
        'ENGINE': 'sqlserver_ado',
        'HOST': DATABASE_HOST,
        'USER': DATABASE_USER,
        'PASSWORD': DATABASE_PASSWORD,
        'COMMAND_TIMEOUT': DATABASE_COMMAND_TIMEOUT,
       }
    }
    

    【讨论】:

    • 谢谢,它成功了。 DATABASE_COMMAND_TIMEOUT 到底是什么?秒,毫秒?我们也可以将其设置为无超时吗? @AdrianGhiuta
    • DATABASE_COMMAND_TIMEOUT 是秒。 Afaik,它的值是必需的(否则默认为 30s),它不能设置为无超时。
    • 可以设置为零,表示不超时
    • 谢谢,这非常有帮助。
    猜你喜欢
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-10
    • 2014-03-09
    • 1970-01-01
    相关资源
    最近更新 更多