412找不到匹配的索引错误

时间:2017-04-07 10:04:13

标签: python google-cloud-datastore google-cloud-platform

我有以下错误:

  

412找不到匹配的索引。建议索引是:
- 种类:monthly_report
属性:
- 名称:belongs_to
- 名称:date_added

我正在使用Python 3.5,数据存储区和远程Django项目,该项目通过google-cloud API访问数据存储区(google-cloud == 0.24.0)。

我运行了命令:

google cloud datastore cleanup-indexes index.yaml
google cloud datastore create-indexes index.yaml

创建索引:

index.yaml中:

indexes:

- kind: history
  ancestor: no
  properties:
  - name: date_added
    direction: asc
  - name: address
    direction: asc

- kind: payment
  ancestor: no
  properties:
  - name: date_added
    direction: asc
  - name: belongs_to
  - name: order

- kind: monthly_report
  ancestor: no
  properties:
  - name: date_added
    direction: asc
  - name: status
  - name: belongs_to
    direction: asc

我使用paymentdate_added上的过滤器对种类belongs_to进行查询。它有效。

但是,在同一方法中,我使用monthly_reportdate_added上的过滤器对种类belongs to进行查询,我收到上述错误。

问题是什么?

更新

如果我过滤了一个可以使用的名称,那么对于多个名称,它不会。

2 个答案:

答案 0 :(得分:0)

每当您进行涉及您使用的所有过滤器的查询时,Google应用引擎的数据存储区都会自动创建索引。它将您的表数据存储在该索引中,以便快速提供。因此,无论何时部署,您都要更新新索引。

如果您正在使用appcfg部署,那么, appcfg.py -A <project-name> update_indexes .

此处.index.yaml文件的路径。

每当您没有找到匹配的索引或NeedIndexError或缺少索引错误时,错误也会显示缺少哪个索引。因此,您只需将建议的索引放入index.yaml文件中,并使用上面的命令更新索引。

在这种情况下,请将此缺失的索引添加到index.yaml文件。

- kind: monthly_report
  properties:
  - name: belongs_to
  - name: date_added

我希望这会有所帮助。有关详细信息Datastore Indices

答案 1 :(得分:0)

似乎订单很重要,所以我改变了这个:

- kind: monthly_report
  properties:
  - name: belongs_to
  - name: date_added

到此:

- kind: monthly_report
  properties:
  - name: date_added
  - name: belongs_to