4

我正在使用来自 Google App Engine 上的 1.6.2 SDK 的 Python 2.7 运行时和 NDB。

我收到以下错误:

BadRequestError: app s~myapphr 无法访问 app dev~myapphr 的数据

源自此代码:

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

我正在从别名为 myapphr 的 dev.myapp.appspot.com 访问我的应用程序。device_id 是在同一个 dev.myapphr 版本上创建的。

到底是怎么回事?

4

2 回答 2

4

开发服务器的默认 default_partition 为“dev”,在生产环境中,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 回答