1

djangoからSQLServerをクエリする際に奇妙な問題が発生しました。

1回のリクエストでdbを2回クエリすると、エラーが発生する場合があります。つまり、最初のdbクエリが大量のデータを返すと、2回目のdbクエリ中にエラーが発生します。

詳細:

Windowsで実行されているDjango(https://bitbucket.org/Manfre/django-mssql/src)用のMicrosoftSQLServerバックエンドを使用しています。

ユーザーがフォームを介して特定のテーブル(「アクティビティ」)のデータをフィルタリングし、それをWebサイトのテーブルに表示してから、別のテーブル(「フレーム」)の関連データをマップに表示できるようにします。

class Frames(models.Model):
...

class Activity(models.Model):
frame_from = models.ForeignKey(Frames, ...)
...

問題は次のとおりです。アクティビティから大量のデータをフィルタリングする場合(たとえば、200行x 6列)、テーブルフレームで同じリクエストで他のクエリを実行することはできません(MARSはDjangosettings.pyでオンになっています):

result = Aktywnosci.objects.filter(qset1) 

いつでも大丈夫ですが

path = Frames.objects.filter(qset2) 

前のクエリが大量のデータを返した場合、OLEDBエラーが発生します。

'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のgoogle-codeページでこの問題に遭遇しました:http ://code.google.com/p/django-mssql/issues/detail?id = 79-しかし、新しいバージョンのパッケージ...

私はそれについて何ができますか?

前もって感謝します

4

2 に答える 2

0

私たちはbitbucketで解決策を得ました:https : //bitbucket.org/Manfre/django-mssql/issue/13/ole-db-provider-for-sql-server-error fromMichaelManfre-これに感謝します。

解決策は次のとおりです。

"SQLOLEDBMARSはうまく機能しません。すべてのドキュメントとデフォルトを変更して、ネイティブクライアントドライバーが使用されることを前提としています。ネイティブクライアントを使用してみてください。"SQLNCLI10"または"SQLNCLI11"

DATABASES = {
    'default': {
        'ENGINE': 'sqlserver_ado',
        'NAME': 'mydb',
        'HOST': r'localhost',
        'USER': '',
        'PASSWORD': '',
        'OPTIONS': {
            'provider': 'SQLNCLI10',
            'extra_params': 'DataTypeCompatibility=80;MARS Connection=True;',
        },
    }
}
于 2012-09-13T16:20:49.437 に答える
0

「settings.py」ファイルに「use_mars=True」が設定されていますか?

http://django-mssql.readthedocs.org/en/latest/settings.html

これが機能しない場合は、質問があります:トリガーが設定されたテーブル(トランザクションSQLスクリプト)を含むSQL Serverでの選択-この場合、SQL Serverはファイアホースの代わりに静的カーソルを使用します(これは何ですか?必要です)したがって、エラーが発生します。トリガーを取り除き、SQL Serverのいくつかのビューを使用して、テーブルの代わりにそれらから選択してみてください。

于 2012-08-28T09:42:03.527 に答える