【问题标题】:GQL basic query in Datastore Viewer console returns "No results in Empty namespace."数据存储查看器控制台中的 GQL 基本查询返回“空命名空间中没有结果”。
【发布时间】:2014-11-26 09:46:27
【问题描述】:

我遇到了一个非常基本的问题,即根据简单的 WHERE <column> = 'xxx' 类型查询从 Datastore Viewer 控制台查询我的数据。

这是我的虚拟数据的快照:


据我了解,我应该能够使用SELECT * FROM User WHERE email = 'a' 根据“电子邮件”字段或任何其他字段查询该记录。但这会返回“在空命名空间中没有结果”。如下图所示:


我看不出与这个相关问题的情况有什么不同:

我在实体编辑器中检查了该记录,可以确认电子邮件字段的值为“a”,没有任何额外的隐藏空格:


更新

Mihail suggested 我需要为此查询创建索引。

按照Java Datastore Index Configuration docs,我在/war/WEB-INF中创建了文件datastore-indexes.xml

<?xml version="1.0" encoding="utf-8"?>
<datastore-indexes autoGenerate="false">
    <datastore-index kind="User" ancestor="false">
        <property name="email" direction="asc" />
    </datastore-index>
</datastore-indexes>

我无法部署我的项目,因为它不允许上传此索引。我得到的错误信息是:

为 entity_type: "User"ancestor 创建复合索引失败: falseProperty { 名称:“电子邮件”方向:1}:此索引:实体类型: “用户”祖先:falseProperty {名称:“电子邮件”方向:1}不是 必要的,因为内置了单一属性索引。请删除 它从您的索引文件中升级到最新版本的 SDK, 如果你还没有。

【问题讨论】:

  • 电子邮件属性是否已编入索引?当属性没有被索引时,它将像您描述的那样工作。
  • @MihailR 它确实看起来像一个索引问题......但出于我个人的好奇心,为什么错误不会像通常在这些情况下那样是“需要索引”?
  • 假设您使用的是 NDB(或任何其他 Datastore 库) - 这就是处理“需要索引”异常的原因。数据存储本身没有。您甚至可以拼错属性名称(即email123 而不是email),但仍然不会出错。

标签: google-app-engine gql


【解决方案1】:

听起来email 属性没有被索引,你不能对未索引的属性进行任何查询,即使像这个一样简单,因为如果你有百万用户,这个查询必须获取所有百万实体以找到您需要的实体。

您需要做的就是将email 属性编入索引,但请注意它不会处理过去的实体。您需要重新保存所有过去的实体才能应用新索引。

将属性编入索引

  • 在 Objectify 中,@Index 注释需要添加到属性中。 More details here.

  • 如果使用低级 Java 数据存储 API,请确保使用 setProperty() 而不是 setUnindexedProperty() 定义属性。 More details here.

  • 如果使用 Python 的 NDB,请确保 indexed 属性未设置为 False,因为默认情况下大多数属性都已编入索引。 More details here

【讨论】:

  • 你是如何将属性编入索引的?
  • 您不应该手动创建新索引(仅在使用排序进行更复杂的查询时才需要它们)只需确保该属性已编入索引。 email 属性是如何定义的?抱歉,我对 GAE 上的 Java 不是很熟悉,但是查看 cloud.google.com/appengine/docs/java/datastore/… 是否有可能您使用 setUnindexedProperty() 而不是 setProperty 定义了 email 属性?
  • 根据之前的评论,我使用的是 Objectify,并且没有为这些字段编制索引。感谢您带路。
猜你喜欢
  • 2012-06-29
  • 2015-04-11
  • 2011-04-21
  • 1970-01-01
  • 2015-12-22
  • 1970-01-01
  • 1970-01-01
  • 2012-10-21
  • 2021-03-18
相关资源
最近更新 更多