【发布时间】: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