2012-02-14 8 views
3

Google App Engineの1.6.2 SDKのNDBでPython 2.7ランタイムを使用しています。BadRequestError:app〜myapphrは、アプリケーションdev〜myapphrのデータにアクセスできません。どうして?

私は次のエラーを取得する:

BadRequestError:このコードからアプリS〜myapphrアプリのDEV〜myapphrのデータにアクセスすることはできません

発信:

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

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

何が起こっていますか?

答えて

3

dev_serverはデフォルトのdefault_partitionが 'dev'であり、本番環境では、HRDアプリケーションは 's'のパーティションを取得します。 devサーバーにurlsafeキーを作成し、それを文字列として格納すると、異なるパーティションを持つ本番サーバーでは機能しません。キーをポータブルにする方法は、dbまたはKeyPropertyをndbに持つReferencePropertyにそれらを保存することです。

3

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

+0

ありがとうございます。私を混乱させたのは、私が自分の開発版devをプロダクションと呼んで、それに何か関係があると思ったということでした。 – Dan

+0

また、GoogleAppEngineLauncherを使用している場合は、右クリックメニューの[情報...]で--default_partitionを設定できます。 – Bemmu

+3

これは[v1.7.6から非推奨]です(https://developers.google.com/appengine/docs/python/tools/old_devserver)。 – OJFord

関連する問題