【问题标题】:django-mssql: 'Query timeout expired' during syncdbdjango-mssql:同步数据库期间的“查询超时已过期”
【发布时间】:2013-11-01 10:36:13
【问题描述】:

syncdb 创建表后,启用约束时出现错误:

Installing custom SQL ...
Installing indexes ...
DatabaseError: (-2147352567, 'Exception occurred.', (0, u'Microsoft SQL Server N
ative Client 10.0', u'Query timeout expired', None, 0, -2147217871), None)
Command:
EXEC sp_msforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
Parameters:
[]

但是在创建表后对同一个数据库手动运行以下命令时,它运行时没有错误:

EXEC sp_msforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"

该数据库包含数百个不是由 Django 自身生成的表。对空的 MSSQL 数据库运行 syncdb 不会产生此错误。这可能是由于数据库中的表太多导致的超时吗?如果是这样,我会解决它吗?我正在使用django-mssql 驱动程序。

【问题讨论】:

  • 对于大型数据库,“WITH CHECK”可能是一个缓慢的操作。 syncdb 的一部分禁用外键并稍后重新启用它们。重新启用后,需要检查这些表,以确保不良数据没有机会在不被注意的情况下溜进来。手动运行命令需要多长时间?正如@krescruz 回答的那样,您很可能需要增加 COMMAND_TIMEOUT

标签: sql-server django constraints django-mssql


【解决方案1】:

更改配置数据库 Setting.py 中的参数 COMMAND_TIMEOUT 示例:

'COMMAND_TIMEOUT': Numberseconds

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 2013-11-14
    • 2012-10-14
    • 2017-09-07
    相关资源
    最近更新 更多