前々から気になっていたんですが、app engine の管理画面の Datasotre Indexesで確認すると、過去に色々と動かした名残で、既に存在しないEntityのインデックスがいっぱい残っています。
特に気にしていなかったんですが、こんなエラーでアプリケーションが動かなくなりました。
com.google.appengine.api.datastore.DatastoreNeedIndexException: no matching index found
で、古いインデックスを消したいんですが、app engineの管理画面では出来ません。
でもPython版のSDKには、Indexを削除するツールがあるようです。
まずはPython.org の Downloadから、python-2.6.5.msi をダウンロードしてインストールします。
そして、Project Hosting on Google Code の Downloadsから、Google App Engine Python SDK – Windows Installer 1.3.5 ダウンロードしてインストールします。
下記手順を実行します。
デスクトップ上の「Google App Engine Launcher」を起動
メニュ[file]→[Create New Application]
起動したダイアログ画面
[Application Name]:[現在のappid](1)
[Parent Directory]:[任意のフォルダーを指定](2)
→[Create]ボタンクリック
(2)で指定したフォルダーに(1)のフォルダが作成されます
app.yaml/index.yamlなどのファイルが存在する事を確認して下さい。
・vacuum_indexesの実行
以下のコマンドを実行して下さい。
[Google App Engine SDKインストールフォルダー]\appcfg.py vacuum_indexes
[(2)+(1)フォルダ]
~中略~
・コマンド実行後
1.メールアドレス・パスワードの入力(入力が求められると思います。)
2.その後、Index削除確認が表示されますので [y]を選択して下さい。
java版のGAE でindexを作成したところ、[Error]となる – Google-App-Engine-Japan | Google グループ
意外と簡単でした。
上記の手順を行った後に app engine の管理画面の [Datastore Indexes] を見ると、軒並み
Index が [Deleting] になっていました。
こんな便利なの、なんでJava版には無いんだろう。
BulkLoaderマダー?(・∀・)っ/凵⌒☆チンチン