Sql server Django SQL Server错误:“0”;无法创建新连接,因为处于手动或分布式事务模式。”;
我在从django查询SQL Server时遇到了一些奇怪的问题 当我在一个请求中两次查询数据库时,在某些情况下会出现错误。也就是说,当第一次db查询返回大量数据时,我们在第二次查询db时会出现错误 详细信息: 我们正在为Django使用Microsoft SQL Server后端(https://bitbucket.org/Manfre/django-mssql/src)在windows上运行 我们希望允许用户通过表单过滤某些表格(“活动”)中的数据,将其显示在网站的表格上,然后在地图上显示另一个表格(“框架”)中的相关数据 问题是:当我们想从活动中过滤大量数据(比如200行x 6列)时,我们不能在同一个请求中对表帧进行其他查询(MARS在Django settings.py中打开): 总是可以的,但是Sql server Django SQL Server错误:“0”;无法创建新连接,因为处于手动或分布式事务模式。”;,sql-server,django,sql-server-2008,django-models,django-mssql,Sql Server,Django,Sql Server 2008,Django Models,Django Mssql,我在从django查询SQL Server时遇到了一些奇怪的问题 当我在一个请求中两次查询数据库时,在某些情况下会出现错误。也就是说,当第一次db查询返回大量数据时,我们在第二次查询db时会出现错误 详细信息: 我们正在为Django使用Microsoft SQL Server后端(https://bitbucket.org/Manfre/django-mssql/src)在windows上运行 我们希望允许用户通过表单过滤某些表格(“活动”)中的数据,将其显示在网站的表格上,然后在地图上显示另
path = Frames.objects.filter(qset2)
上一个查询返回的数据量较大时,会引发OLE DB错误:
“用于SQL Server的Microsoft OLE DB提供程序”错误:无法
创建新连接,因为它处于手动或分布式事务模式
PS.settings.py中的数据库设置:
# Database for this installation.
DATABASES = {
'default':{
'ENGINE': 'django.db.backends.sqlserver_ado',
'NAME': '***',
'USER': '***',
'PASSWORD': '***',
'HOST': '***',
'PORT': '',
'OPTIONS' : {
'provider': 'SQLOLEDB',
'use_mars': True,
}
}
}
PS2。我在djang mssql的google代码页上遇到了这个问题:-但它似乎在新版本的软件包中得到了解决
我能怎么办
提前感谢是否在“settings.py”文件中设置了“use_mars=True”
如果这不起作用,我有一个问题:您在SQL Server中的选择是否涉及带有触发器的表(transact-SQL脚本)-在这种情况下,SQL Server将使用静态游标而不是firehose游标(这是您需要的),因此您将得到错误。尝试摆脱触发器,在SQL Server中使用一些视图并从中选择,而不是从表中选择。我们从bitbucket获得了解决方案:来自Michael Manfre-非常感谢
解决办法如下:
“SQLOLEDB
和MARS
工作不太好,我打算更改所有文档和默认值,以假定将使用本机客户端驱动程序。请尝试使用本机客户端;“SQLNCLI10”
或“SQLNCLI11”
Yes@Dan S-I“use_mars=true”(请参见上面编辑的问题中的settings.py)。我将尝试使用视图,而不是表,尽管仍然不起作用-我们尝试了视图-不是这样,mars似乎也打开了
path = Frames.objects.filter(qset2)
# Database for this installation.
DATABASES = {
'default':{
'ENGINE': 'django.db.backends.sqlserver_ado',
'NAME': '***',
'USER': '***',
'PASSWORD': '***',
'HOST': '***',
'PORT': '',
'OPTIONS' : {
'provider': 'SQLOLEDB',
'use_mars': True,
}
}
}
DATABASES = {
'default': {
'ENGINE': 'sqlserver_ado',
'NAME': 'mydb',
'HOST': r'localhost',
'USER': '',
'PASSWORD': '',
'OPTIONS': {
'provider': 'SQLNCLI10',
'extra_params': 'DataTypeCompatibility=80;MARS Connection=True;',
},
}
}