2015-05-14 41 views
2

我正在查詢一個視圖,它將返回大量數據並且需要1分多鐘才能完成。當直接執行自定義SQL時,查詢超時在django-mssql中過期

我正在用django.db.connection.cursor()執行查詢,因爲這不是我的默認數據庫。 30秒後,我收到一個異常'查詢超時過期'。我認爲30秒是django-mssql的默認超時。有沒有辦法增加暫停時間或有其他方法。

無法在SQL查詢上工作,因爲它由另一方執行。只有一個視圖是暴露的。

str(Exception)是 「(-2147352567, '出現異常。',(0,u'Microsoft OLE DB提供程序SQL Server 'u'Query超時過期',無,0,-2147217871),無)」

回答

4

您可以在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, 
    } 
} 
+0

謝謝,它工作。 DATABASE_COMMAND_TIMEOUT究竟是什麼?秒,毫秒? 也可以將它設置爲不超時? @AdrianGhiuta – shinoymm

+1

DATABASE_COMMAND_TIMEOUT是秒。 Afaik,它是必需的值(否則它將默認爲30秒),它不能設置爲不超時。 –

+0

它可以設置爲零,這意味着沒有超時 – shinoymm