2016-08-19 117 views
1

我只是在为Google Data Store制作标准介绍教程,而且我在Ubuntu上本地运行。它一开始工作,但由于某些原因,它停止工作,并始终显示跟踪错误。Google App Engine DataStore内部服务器错误(localhost)

这是我所得到的,如果我试图访问数据或当我去http://localhost:8000/datastore

我试图删除谷歌App Engine的文件夹,并重新下载它,并试图命令清除数据。我用完了想法。有没有人遇到过这个问题?

Internal Server Error 

The server has either erred or is incapable of performing the requested operation. 

Traceback (most recent call last): 
    File "/home/matthew/Project/google_appengine/lib/webapp2-2.5.1/webapp2.py", line 1536, in __call__ 
    rv = self.handle_exception(request, response, e) 
    File "/home/matthew/Project/google_appengine/lib/webapp2-2.5.1/webapp2.py", line 1530, in __call__ 
    rv = self.router.dispatch(request, response) 
    File "/home/matthew/Project/google_appengine/lib/webapp2-2.5.1/webapp2.py", line 1278, in default_dispatcher 
    return route.handler_adapter(request, response) 
    File "/home/matthew/Project/google_appengine/lib/webapp2-2.5.1/webapp2.py", line 1102, in __call__ 
    return handler.dispatch() 
    File "/home/matthew/Project/google_appengine/google/appengine/tools/devappserver2/admin/admin_request_handler.py", line 96, in dispatch 
    super(AdminRequestHandler, self).dispatch() 
    File "/home/matthew/Project/google_appengine/lib/webapp2-2.5.1/webapp2.py", line 572, in dispatch 
    return self.handle_exception(e, self.app.debug) 
    File "/home/matthew/Project/google_appengine/lib/webapp2-2.5.1/webapp2.py", line 570, in dispatch 
    return method(*args, **kwargs) 
    File "/home/matthew/Project/google_appengine/google/appengine/tools/devappserver2/admin/datastore_viewer.py", line 667, in get 
    kinds = self._get_kinds(namespace) 
    File "/home/matthew/Project/google_appengine/google/appengine/tools/devappserver2/admin/datastore_viewer.py", line 603, in _get_kinds 
    return sorted([x.kind_name for x in q.run()]) 
    File "/home/matthew/Project/google_appengine/google/appengine/ext/db/__init__.py", line 2330, in next 
    return self.__model_class.from_entity(self.__iterator.next()) 
    File "/home/matthew/Project/google_appengine/google/appengine/datastore/datastore_query.py", line 3321, in next 
    next_batch = self.__batcher.next_batch(Batcher.AT_LEAST_OFFSET) 
    File "/home/matthew/Project/google_appengine/google/appengine/datastore/datastore_query.py", line 3207, in next_batch 
    batch = self.__next_batch.get_result() 
    File "/home/matthew/Project/google_appengine/google/appengine/api/apiproxy_stub_map.py", line 613, in get_result 
    return self.__get_result_hook(self) 
    File "/home/matthew/Project/google_appengine/google/appengine/datastore/datastore_query.py", line 2906, in __query_result_hook 
    self._batch_shared.conn.check_rpc_success(rpc) 
    File "/home/matthew/Project/google_appengine/google/appengine/datastore/datastore_rpc.py", line 1371, in check_rpc_success 
    rpc.check_success() 
    File "/home/matthew/Project/google_appengine/google/appengine/api/apiproxy_stub_map.py", line 579, in check_success 
    self.__rpc.CheckSuccess() 
    File "/home/matthew/Project/google_appengine/google/appengine/api/apiproxy_rpc.py", line 157, in _WaitImpl 
    self.request, self.response) 
    File "/home/matthew/Project/google_appengine/google/appengine/datastore/datastore_sqlite_stub.py", line 971, in MakeSyncCall 
    response, request_id) 
    File "/home/matthew/Project/google_appengine/google/appengine/api/apiproxy_stub.py", line 131, in MakeSyncCall 
    method(request, response) 
    File "/home/matthew/Project/google_appengine/google/appengine/datastore/datastore_stub_util.py", line 2962, in UpdateIndexesWrapper 
    self._SetupIndexes() 
    File "/home/matthew/Project/google_appengine/google/appengine/datastore/datastore_stub_util.py", line 3438, in _SetupIndexes 
    index_defs = datastore_index.ParseIndexDefinitions(index_text) 
    File "/home/matthew/Project/google_appengine/google/appengine/datastore/datastore_index.py", line 208, in ParseIndexDefinitions 
    return yaml_object.BuildSingleObject(IndexDefinitions, document) 
    File "/home/matthew/Project/google_appengine/google/appengine/api/yaml_object.py", line 321, in BuildSingleObject 
    definitions = BuildObjects(default_class, stream, loader) 
    File "/home/matthew/Project/google_appengine/google/appengine/api/yaml_object.py", line 304, in BuildObjects 
    listener.Parse(stream, loader) 
    File "/home/matthew/Project/google_appengine/google/appengine/api/yaml_listener.py", line 227, in Parse 
    self._HandleEvents(self._GenerateEventParameters(stream, loader_class)) 
    File "/home/matthew/Project/google_appengine/google/appengine/api/yaml_listener.py", line 178, in _HandleEvents 
    raise yaml_errors.EventError(e, event_object) 
EventError: Unable to assign value '5770237022568448' to attribute 'name': 
Value 5770237022568448 for name is not of the expected type str 
    in "<string>", line 17, column 11: 
     - name: 5770237022568448 

更新更多的信息

这是我所看到的,当我试图在交互式控制台上: enter image description here 这是我所看到的,当我点击数据存储浏览器,数据存储索引,或Blob存储浏览器。

enter image description here

+0

错误提示属性类型(字符串)与其值(“5770237022568448”,看起来像一个很长的实体键)之间不匹配。这可能表示意外使用实体的密钥而不是其值,或者其密钥ID而不是其密钥。也可以在实体模型中指示不兼容的更改,而DB中存在该模型的实体(字符串与整型/长整型)。或者使用保留的属性名称。您需要显示一些代码,至少创建和查询/访问与您得到错误的操作相关的实体及其模型。 –

+0

我可能做了类似于使用密钥ID而不是密钥的方法。但是,我现在没有任何查询,只是有一个模型,当我转到http:// localhost:8000/datastore时,发现上述错误。 class Story(db.Model): title = db.StringProperty() body = db.TextProperty() created = db.DateTimeProperty(auto_now_add = True) – tuzzer

+0

我想知道是不是有重新设置整个数据存储。我尝试删除整个Google App Engine文件夹并下载一个新文件夹。但那并不奏效。 – tuzzer

回答

3

我想出了如何解决这个问题。

我意识到在我的项目文件夹中有一个“index.yaml”,这是它里面的东西。

indexes: 

# AUTOGENERATED 

# This index.yaml is automatically updated whenever the dev_appserver 
# detects that a new type of query is run. If you want to manage the 
# index.yaml file manually, remove the above marker line (the line 
# saying "# AUTOGENERATED"). If you want to manage some indexes 
# manually, move them above the marker line. The index.yaml file is 
# automatically uploaded to the admin console when you next deploy 
# your application using appcfg.py. 

- kind: Post 
    ancestor: yes 
    properties: 
    - name: 5770237022568448 
    direction: desc 

在某些时候,我可能输入了一个不正确的查询,它被记录在那里。这导致了我的数据存储区中的错误。删除这个文件解决了这个问题。

我不确定我做了什么样的查询导致这种情况发生。有一种担心,即不正确的查询可能会永久损坏数据库。

+1

好的。我仍然期望数据库不会实际损坏,只需修复索引文件即可恢复管理数据库查看器功能,而不会丢失数据库数据。是的 - 我只是使用索引文件来测试(并重现您的问题)。 –

0

如果要清除数据存储的数据,你可以到你的应用程序的数据存储区管理(云控制台>数据存储>管理员),并从那里删除实体。如果实际上在已经创建了一些实体之后更改了数据模型,则可以解决此问题,从而导致不兼容的属性类型。

+0

如何到达数据存储管理员?我现在只是本地托管。 – tuzzer

+0

您将访问console.cloud.google.com,左上角的菜单中有一个Datastore部分,在该页面上您可以从菜单中选择Admin。但是只有来自已部署应用程序的数据才会显示在那里,如果您使用的是本地主机,则可以从本地主机编辑您的实体:8080/_ah/admin – Kathy

+0

启动dev_appserver时,管理控制台可以在'localhost:8000'端口设置。 –