1

機能テストで、dev_appserver と同じ設定を使用していないことに少し気付きました。現在、require_indexes を使用して dev_appserver (非 rel) を実行しています。

テスト ベッドで同じ設定を強制的に使用するにはどうすればよいですか?

使用してみSetupIndexesましたが、index.yaml で定義する必要はありませんでした。設定が正しくなかったため、必要なクエリを実行できます。

すなわち

clz.testbed = Testbed()
clz.testbed.activate()
clz.testbed.init_memcache_stub()
clz.testbed.init_taskqueue_stub()
clz.testbed.init_urlfetch_stub()
clz.testbed.init_datastore_v3_stub(use_sqlite=True, datastore_file=somepath)
SetupIndexes('','')

model.objects().filter(x=1, y=2.....) #will work regardless of index defined.

しかし、クエリがサーバー上で実行されると、

NeedIndexError: このクエリには、定義されていない複合インデックスが必要です。アプリケーション ルートの index.yaml ファイルを更新する必要があります。次のインデックスは、最低限必要なインデックスです。

4

1 に答える 1

3

{ "require_indexes" : True } をキーワード引数として init_datastore_v3_stub() に追加してみてください

SDK コードを確認 (およびステップ実行) して、そのパラメータが最終的にデータストア スタブにどのように渡されるかを確認できます。

于 2012-07-24T03:07:25.447 に答える