当我使用Objectify部署我的Google App Engine服务器APP时出现以下异常,尽管我已经配置了应用程序的所有索引。仍然不明白为什么我得到这个例外,由于这个错误,我无法在这个Web应用程序上做任何事情。
生产服务器中的异常
/search
com.google.appengine.api.datastore.DatastoreNeedIndexException: no matching index found.
The suggested index for this query is:
<datastore-index kind="M_TAXI" ancestor="false" source="manual">
<property name="cityName" direction="asc"/>
<property name="updatedOn" direction="asc"/>
</datastore-index>
datastore.indexes.xml
<?xml version="1.0" encoding="UTF-8"?>
<datastore-indexes autoGenerate="true">
<datastore-index kind="M_COUNTRY" ancestor="false" source="auto">
<property name="countryCode" direction="asc" />
<property name="countryName" direction="asc" />
<property name="active" direction="asc" />
</datastore-index>
<datastore-index kind="M_CITY" ancestor="false" source="auto">
<property name="countryCode" direction="asc" />
<property name="cityName" direction="asc" />
<property name="cityCode" direction="asc" />
<property name="active" direction="asc" />
</datastore-index>
<datastore-index kind="M_TAXI" ancestor="false" source="auto">
<property name="cityName" direction="asc" />
<property name="supplierUserName" direction="asc" />
<property name="updatedOn" direction="asc" />
<property name="active" direction="asc" />
<property name="countryName" direction="asc" />
</datastore-index>
</datastore-indexes>
来自生产服务器的数据存储索引图像快照
答案 0 :(得分:4)
抛出异常的查询无法使用现有的M_TAXI。请尝试插入
<datastore-index kind="M_TAXI" ancestor="false" source="manual">
<property name="cityName" direction="asc"/>
<property name="updatedOn" direction="asc"/>
</datastore-index>
在&lt; / datastore-indexes&gt;之前的datastore.indexes.xml中结束标记,并在另一个M_TAXI元素之后,并报告结果是什么。
答案 1 :(得分:3)
您必须在datastore.indexes.xml
<datastore-index kind="M_TAXI" ancestor="false" source="manual">
<property name="cityName" direction="asc"/>
<property name="updatedOn" direction="asc"/>
</datastore-index>
由于Appengine数据存储区是无模式的,因此您必须为不同的查询添加单独的索引。
请参阅此stackoverflow post。