2016-08-19 21 views
1

私はGoogle Data Storeへの標準イントロチュートリアルを行っています。私はUbuntuでローカルに実行しています。最初は動作していましたが、何らかの理由で動作が停止し、常にエラーが表示されていました。Google App Engineデータストア内部サーバーエラー(localhost)

これは、私がデータにアクセスしようとしたり、私がhttp://localhost:8000/datastore

に行くとき、私はGoogleのApp Engineのフォルダを削除しようとしたし、それを再ダウンロードし、データをクリアするためのコマンドをしようとした場合、私が得るものです。私はアイデアがなくなった。誰もこの問題に遭遇しましたか? enter image description here これは私がデータストアビューア、データストアインデックス、またはブロブストアビューアをクリックしたときに、私が見たものである:より多くの情報

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

+0

エラーは、プロパティタイプ(文字列)とその値(エンティティキーのように見える、長さが「5770237022568448」)の間に不一致があることを示しています。値の代わりにエンティティのキ​​ーが偶然に使用されたか、キーの代わりにキーIDが使用された可能性があります。エンティティモデルのエンティティがDBに存在する間に、エンティティモデルの互換性のない変更を示すこともできます(文字列対int/long)。または、予約されたプロパティ名を使用します。少なくともエラーとそのモデルを取得する操作に関連するエンティティの作成とクエリ/アクセスにいくつかのコードを表示する必要があります。 –

+0

私はキーの代わりにキーIDを使用するような何かをしたかもしれません。しかし、私は今すぐクエリを持っていないし、モデルを持っているだけで、私はhttp:// localhost:8000/datastoreに行ったときに上記のエラーを見た。 タイトル= 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

ニースキャッチ。私はまだDBが実際に壊れていないと思ってDBのデータ損失なしで管理DBビューアの機能を復元するためにインデックスファイルを修正するだけです。うん - 私はちょうどあなたのインデックスファイルを使用して(とあなたの問題を再現)をテストしました。 –

0

あなたのデータストアのデータをクリアしたい場合は、アプリのデータストアの管理(クラウドコンソール>データストア>管理者)に移動し、そこから自分のエンティティを削除することができます。実際にいくつかのエンティティが作成された後にデータモデルを変更したため、互換性のないプロパティタイプが発生した場合は、この問題を修正できます。

+0

データストアの管理者にはどうすればいいですか?私はちょうど現地でホストしています。 – tuzzer

+0

console.cloud.google.comに行き、左上のメニューに[データストア]セクションがあり、そのページでメニューから[管理者]を選択します。ただし、ローカルホストを使用している場合は、展開されたアプリケーションのデータだけが表示されます。localhost:8080/_ah/admin – Kathy

+0

からエンティティを編集できます。デフォルトでdev_appserverを起動すると、管理コンソールに 'localhost:8000'ポート設定。 –

関連する問題