【问题标题】:BadValueError: Entity has uninitialized properties ___ after resetting indexes and clearing memcacheBadValueError:实体在重置索引和清除内存缓存后具有未初始化的属性___
【发布时间】:2016-05-06 21:10:41
【问题描述】:

我正在使用 Python 开发 Google App Engine 应用程序。我尝试将我正在为其中一条路由运行的查询切换为仅查询一个属性而不是 2 个属性,这会导致每当我们尝试运行该查询时出现索引错误。

类似于“找不到与指定参数匹配的索引”,但我目前没有任何屏幕截图。为了尝试纠正这种情况,我们运行了 appcfg.py Vacuum_indices 并删除了与原始搜索相关的所有索引。然后我们上传了一个新的 index.yaml 来指定新的索引。虽然我们可以看到确实在管理面板上创建了新索引,而旧索引已经消失,但我们仍然遇到同样的错误。

我们真的不确定为什么会发生这种情况,并且在在线查找这些问题的文档时遇到了麻烦。我们的下一个想法是,memcache 中的某些先前状态导致查询尝试使用它的旧索引。所以我们刷新了内存缓存,现在我们得到了这个错误:

File  "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1535, in __call__
  rv = self.handle_exception(request, response, e)
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1529, in __call__
  rv = self.router.dispatch(request, response)
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1278, in default_dispatcher
  return route.handler_adapter(request, response)
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1102, in __call__
  return handler.dispatch()
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 572, in dispatch
  return self.handle_exception(e, self.app.debug)
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 570, in dispatch
  return method(*args, **kwargs)
File "/base/data/home/apps/s~dev-erpetcloud2/dev1.392600188150722624/routes/users.py", line 172, in post
  res_dict = cp_user.to_dict()
File "/base/data/home/apps/s~dev-erpetcloud2/dev1.392600188150722624/routes/models/../models/cp_models.py", line 248, in to_dict
  animal_dict = animal.to_dict()
File "/base/data/home/apps/s~dev-erpetcloud2/dev1.392600188150722624/routes/models/../models/cp_models.py", line 574, in to_dict
  protocol, params = self.get_protocol_and_params()
File "/base/data/home/apps/s~dev-erpetcloud2/dev1.392600188150722624/routes/models/../models/cp_models.py", line 395, in get_protocol_and_params
  record = self.protocol_state_key.get()
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/key.py", line 572, in get
  return self.get_async(**ctx_options).get_result()
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/tasklets.py", line 342, in get_result
  self.check_success()
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/tasklets.py", line 389, in _help_tasklet_along
  value = gen.send(val)
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/context.py", line 765, in get
  pbs = entity._to_pb(set_key=False).SerializePartialToString()
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/model.py", line 3158, in _to_pb
  self._check_initialized()
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/model.py", line 3014, in _check_initialized
'Entity has uninitialized properties: %s' % ', '.join(baddies))
BadValueError: Entity has uninitialized properties: title

查看数据存储区,此跟踪引用的实体肯定具有“标题”属性。

我已经四处寻找可能因删除索引和刷新内存缓存而引起的错误,但没有发现任何有用的信息。

如果有人能给我一些关于这里可能发生的事情以及这些系统如何工作的见解(我的心智模型可能已经关闭),或者为我指出正确的方向,那就太好了。谢谢!!

【问题讨论】:

    标签: google-app-engine memcached google-app-engine-python database-indexes


    【解决方案1】:

    此错误表示已将属性“title”指定为必需属性,但您尝试将实体写入数据存储区而不初始化此属性。此错误仅在 put() 时发生。无论如何,您是否对实体定义或将这些实体写入数据存储区的部分代码进行了任何更改?

    编辑:尝试读取没有为“必需”属性指定值的实体时也可能发生错误。

    【讨论】:

    • 就是这样,我们没有更改该实体定义。事实上,我亲自检查了数据存储,以确保它试图提取的内容确实具有该属性。
    • 好的,在什么情况下你会看到这个错误?另外,您能否确认“title”属性始终被指定为“required”并且从未更改过?
    • 我无法确认,但是,我可以确认它尝试获取的数据确实具有标题字段,并且该字段已初始化。
    • 它也发生在pickle
    • 在调用get_by_id(<value>) 方法时也会发生这种情况。
    猜你喜欢
    • 2019-03-20
    • 1970-01-01
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多