機能テストで、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 ファイルを更新する必要があります。次のインデックスは、最低限必要なインデックスです。