Object Design
Home > Index > GAE(google app engine) インデックスのトラブルの顛末

GAE(google app engine) インデックスのトラブルの顛末

GoogleAppEngineの開発していたところ、ローカルの開発環境でも問題ないのですが、 GAEにアップロードして作動させるとうまく動かないことがありました。 調べてみると、GQLクエリ部分で問題が発生しているようです。 いろいろ調べたり、グーグルグループで質問したりしてなんとか解消できたので、 解消方法をメモしておきます。

基本的認識

GQLで条件問い合わせを行う場合は、インデックスが正しく作成されている必要があります。 自動で生成される index.yaml がこちらの意図通りになっていない場合があるので、 手動で index.yaml を書き直す必要があります。 (どういう場合に自動でうまくいくのか、といったことはよくわかっていません。)

対処方法

状況の確認

ちなみに、 管理コンソールから直接GQLクエリを発行できるので、 自分の意図した作動をするかどうか確認することができます。
GAE上では、エラーがどこで起きているか確認が難しいので、 GQL回りで発生しているかどうかの切り分けに使えそうです。

解決方法

statusがerrorになっているインデックスを appcfg.py vacuum_indexes を使って削除する。 その後適切に index.yaml を手動設定して、appcfg.py update_indexes を実行する。 このとき、deleting statusのインデックスは作成できないので、 完全に消えたことを管理コンソールで確認してから、update_indexes を実行する必要がある。

  1. 管理コンソールにアクセスして error または buildingになったまま変化しないインデックスを確認する
  2. index.yaml 内の記述で 問題のインデックス記述を削除
  3. appcfg.py vacuum_indexes を実行
    • このとき、インデックスを削除していいか、確認プロンプトが出るので、Yで削除
  4. 管理コンソールで、deleting ステータスになっているか確認
  5. 管理コンソールで、該当インデックスが完全に削除されるまで待つ
  6. index.yaml を編集して、必要なインデックスを記述(復活させる)
  7. appcfg.py update_indexes を実行
  8. 管理コンソールで、該当のインデックスが building から serving になるのを確認(しばらくかかる場合があります)
関連キーワード