4

Google App Engine の 1.6.2 SDK の NDB で Python 2.7 ランタイムを使用しています。

次のエラーが表示されます。

BadRequestError: アプリ s~myapphr はアプリ dev~myapphr のデータにアクセスできません

このコードから:

device = model.Key(urlsafe=device_id).get()

myapphr にエイリアスされている dev.myapp.appspot.com からアプリにアクセスしています。device_id は、同じ dev.myapphr バージョンで作成されました。

何が起こっている?

4

2 に答える 2

4

開発サーバーには「dev」のデフォルトの default_partition があり、本番環境では、HRD アプリは「s」のパーティションを取得します。開発サーバーで urlsafe キーを作成し、それを文字列として保存すると、パーティションが異なる運用サーバーでは機能しません。キーを移植可能にする方法は、db の ReferenceProperty または ndb の KeyProperty にキーを保存することです。

于 2012-02-14T17:14:16.680 に答える
3

そこに表示されるプレフィックス ("s~" と "dev~") は、パーティションと呼ばれます。dev_appserver.py の --default_partition フラグを使用して、プレフィックスを "dev~" から "s~" に変更できます。

于 2012-02-14T17:53:40.163 に答える