【问题标题】:BadRequestError: app s~myapphr cannot access app dev~myapphr's data. Why?BadRequestError: app s~myapphr 无法访问 app dev~myapphr 的数据。为什么?
【发布时间】:2012-03-06 00:58:54
【问题描述】:

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

我收到以下错误:

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

源自此代码:

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

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

发生了什么事?

【问题讨论】:

    标签: google-app-engine app-engine-ndb


    【解决方案1】:

    开发服务器的默认 default_partition 为“dev”,在生产环境中,HRD 应用程序的分区为“s”。如果您在开发服务器上创建 urlsafe 密钥并将其存储为字符串,它将无法在具有不同分区的生产服务器上工作。使密钥可移植的方法是将它们保存在带有 db 的 ReferenceProperty 或 ndb 上的 KeyProperty 中。

    【讨论】:

      【解决方案2】:

      您在那里看到的前缀(“s~”和“dev~”)称为分区。您可以使用 dev_appserver.py 的 --default_partition 标志将前缀从“dev~”更改为“s~”。

      【讨论】:

      • 谢谢。让我感到困惑的是,我在生产上调用了我的开发版本 dev,并认为这与它有关。
      • 另请注意,如果使用 GoogleAppEngineLauncher,您可以在右键菜单的“信息...”中设置 --default_partition。
      • 请注意这是deprecated since v1.7.6
      猜你喜欢
      • 2014-11-13
      • 1970-01-01
      • 2020-10-28
      • 1970-01-01
      • 2018-02-18
      • 1970-01-01
      • 1970-01-01
      • 2014-02-02
      • 1970-01-01
      相关资源
      最近更新 更多