【发布时间】:2015-10-28 10:20:02
【问题描述】:
几个小时前,我在 GAE 部署并运行了我的应用程序。它仍然失败,因为它需要订购某些数据存储项目,而 GAE 仍未生成所需的索引。所以在.order() 处,它会抛出一个NeedIndexError。这需要多长时间?
我过去曾为 10~ 个 GAE 应用程序执行相同的程序,据我记忆,它从未如此缓慢。 (好吧,它一直很慢......)
- 旧控制台中的“数据存储索引”页面只显示“您尚未为此应用程序创建索引。”。
- 新控制台什么也没说。它只是显示一个“蓝色警报”,就好像我还没有等到自己死去一样。警报中的消息是:
Cloud Datastore 查询由索引、可扩展数据提供支持 随着属性值的变化而实时更新的结构。 您项目的数据存储索引配置指定它的索引 需要支持其查询。 Cloud Datastore 将新索引构建为 部署索引配置时需要。您可以检查准备好的 使用此控制台查看您应用的索引状态。
(即笑话)
我该怎么办?
更新:
这是 index.yaml:
indexes:
# AUTOGENERATED
- kind: Mjquizinfo
ancestor: yes
properties:
- name: version
direction: desc
【问题讨论】:
-
我所做的是为我需要一个新索引的实体创建一个游标查询,为其加载和保存每个实体,从而为现有实体创建索引。如果您的索引是复合索引,您应该检查该索引是否部署在正确的索引配置文件中。
-
我只是按原样部署本地生成的index.yaml。它应该很简单。我将其粘贴在我的问题中。
-
据我所知,当您定义新索引时,只有新实体的属性才会被索引。旧实体不受影响。但错误不应该是这样的。您在代码中排序的顺序是否与定义的索引相同(asc vs. desc)?
-
是的,它是一样的。这是新项目的另一个应用程序 B,但与应用程序 A 完全相同的代码已经运行了 6 个多月。顺序相同(- 为 desc)。三个小时,仍然没有任何回应。我必须放弃今天。它明天会神奇地工作......
-
不会是第一次睡个好觉解决应用引擎的问题 :-)