2016-08-19 110 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'端口設置。 –