次のコマンドを使用して、データストアからデータをダウンロードしようとしています。
appcfg.py download_data --config_file=bulkloader.yaml --application=myappname
--kind=mykindname --filename=myappname_mykindname.csv
--url=http://myappname.appspot.com/_ah/remote_api
この特定の種類/テーブルに多くのデータがない場合、データを一度にダウンロードできました。次のエラーが発生することがあります。
.................................[ERROR ] [Thread-11]
ExportProgressThread:
Traceback (most recent call last):
File "C:\Program Files\Google\google_appengine\google\appengine\tools
\bulkload
er.py", line 1448, in run
self.PerformWork()
File "C:\Program Files\Google\google_appengine\google\appengine\tools
\bulkload
er.py", line 2216, in PerformWork
item.key_end)
File "C:\Program Files\Google\google_appengine\google\appengine\tools
\bulkload
er.py", line 2011, in StoreKeys
(STATE_READ, unicode(kind), unicode(key_start), unicode(key_end)))
OperationalError: unable to open database file
これは私がサーバーログに見るものです:
Traceback (most recent call last):
File "/base/python_runtime/python_lib/versions/1/google/appengine/
ext/remote_api/handler.py", line 277, in post
response_data = self.ExecuteRequest(request)
File "/base/python_runtime/python_lib/versions/1/google/appengine/
ext/remote_api/handler.py", line 308, in ExecuteRequest
response_data)
File "/base/python_runtime/python_lib/versions/1/google/appengine/
api/apiproxy_stub_map.py", line 86, in MakeSyncCall
return stubmap.MakeSyncCall(service, call, request, response)
File "/base/python_runtime/python_lib/versions/1/google/appengine/
api/apiproxy_stub_map.py", line 286, in MakeSyncCall
rpc.CheckSuccess()
File "/base/python_runtime/python_lib/versions/1/google/appengine/
api/apiproxy_rpc.py", line 126, in CheckSuccess
raise self.exception
ApplicationError: ApplicationError: 4 no matching index found.
そのエラーが表示されたとき、私は単にダウンロードを再実行し、物事はうまくいくでしょう。
最近、私の種類のサイズが大きくなるにつれて、ダウンロードツールがはるかに頻繁に失敗することに気づいています。たとえば、エンティティが3500までの種類の場合、コマンドを5回実行する必要がありましたが、成功したのは最後の1つだけでした。このエラーを回避する方法はありますか?以前は、たまに失敗したためにスクリプトでダウンロードを自動化できなかったのが唯一の心配でした。今では、データをまったく取り出せなくなるのではないかと心配しています。
この問題については前にここで説明しました が、投稿は古く、提案されたフラグが何をするのかわかりません。したがって、同様のクエリを再度投稿します。
いくつかの追加の詳細。ここで述べたように、私は中断されたダウンロードを続行する提案を試みました(App Engineからのデータのダウンロードのセクションで)。中断後に再開すると、エラーは発生しませんが、ダウンロードされる行数は、データストア管理者が表示するエンティティ数よりも少なくなります。これは、次のメッセージが表示されます。
[INFO ] Have 3220 entities, 3220 previously transferred
[INFO ] 3220 entities (1003 bytes) transferred in 2.9 seconds
データストア管理者は、この特定の種類には最大4300のエンティティがあると言っています。残りのエンティティがダウンロードされないのはなぜですか?
ありがとう!