我从 django 查询 SQL Server 时遇到了一些奇怪的问题。
当我在单个请求中查询 db 两次时,在某些情况下会出现错误。即当第一次数据库查询返回大量数据时,我们在第二次查询数据库时最终会出错。
细节:
我们正在为 Windows 上运行的 Django (https://bitbucket.org/Manfre/django-mssql/src) 使用 Microsoft SQL Server 后端。
我们希望允许用户通过表单过滤来自某个表(“活动”)的数据,将其显示在网站的表上,然后在地图上显示来自另一个表(“框架”)的相关数据。
class Frames(models.Model):
...
class Activity(models.Model):
frame_from = models.ForeignKey(Frames, ...)
...
问题是:当我们想从 Activity 中过滤大量数据时(比如说 200 行 x 6 列),我们不能在同一个请求中对表 Frames 进行其他查询(在 Django settings.py 中打开了 MARS):
result = Aktywnosci.objects.filter(qset1)
总是好的,但是
path = Frames.objects.filter(qset2)
当上一个查询返回大量数据时,引发 OLE DB 错误:
“Microsoft OLE DB Provider for SQL Server”错误:无法创建新连接,因为处于手动或分布式事务模式。
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 的谷歌代码页上遇到了这个问题:http ://code.google.com/p/django-mssql/issues/detail?id=79 - 但它似乎在新版本中得到了解决包裹...
我能做些什么呢?
提前致谢