我的迁移到hrd不适用于appspot.com。应用程序数据存储在原始主/从(MS)和高复制数据存储(hrd)中都有3种“数据类型”:Group
,引脚和日志。每个Group
实体都有与其关联的Pin实体和/或Log实体,但关联不再在hrd中工作(这是所有迁移后都存活的),所以我的应用程序不再有效,我正在寻求帮助来恢复它。迁移到高复制数据存储后,实体密钥不同
下面我报告数据存储中前两个Pin
实体的实体键。我在每一对的较短键中插入了一些空格,以便排列键以查看它们的相似之处。请注意,所有键的开始和结束都是相似的,但MS与hrd的不同。
Decoded entity key: Group: name=250cc > Pin: id=1
Entity #1 MS key: ah NzaW1wbGlmeWNvbm5lY3Rpb25zchkLEgVHcm91cCIFMjUwY2MMCxIDUGluGAEM
Entity #1 hrd key: ahlzfnNpbXBsaWZ5Y29ubmVjdGlvbnMtaHJkchkLEgVHcm91cCIFMjUwY2MMCxIDUGluGAEM
Decoded entity key: Group: name=250cc > Pin: id=5001
Entity #2 MS key: ah NzaW1wbGlmeWNvbm5lY3Rpb25zchoLEgVHcm91cCIFMjUwY2MMCxIDUGluGIknDA
Entity #2 hrd key: ahlzfnNpbXBsaWZ5Y29ubmVjdGlvbnMtaHJkchoLEgVHcm91cCIFMjUwY2MMCxIDUGluGIknDA
To view the app yourself使用此链接。您将看到名为“Playground”的Group
并查看它在URL中的调用方式。但是,出现的唯一标记(地图引脚)是从迁移到hrd以来添加的标记。
编辑#0
下面是用于添加保存Pin
如果母公司是Group
我的Python代码。
elif action == "add":
pin = Pin(parent=place)
pin.name = self.request.get('details')
pin.lat = float(self.request.get('lat'))
pin.lng = float(self.request.get('lng'))
pin.category = int(self.request.get('category'))
pin.label = self.request.get('label')
new_id = pin.put()
self.response.out.write(new_id)
下面是Pin
的类定义。
class Pin(db.Model):
date = db.DateTimeProperty(auto_now_add=True)
lat = db.FloatProperty()
lng = db.FloatProperty()
name = db.StringProperty()
cornerColor = db.StringProperty(default='ffffff')
height = db.IntegerProperty(default=32)
label = db.StringProperty(default='')
labelColor = db.StringProperty(default='000000')
labelSize = db.IntegerProperty(default=2)
primaryColor = db.StringProperty(default='ff0000')
shadowColor = db.StringProperty(default='000000')
shape = db.StringProperty(default='circle')
strokeColor = db.StringProperty(default='000000')
width = db.IntegerProperty(default=32)
category = db.IntegerProperty(default=0)
scategory = db.StringProperty()
logindex = db.IntegerProperty(default=0)
imageindex = db.IntegerProperty(default=0)
deleteRequested = db.BooleanProperty(default=False)
编辑#0
编辑#1
与我的应用程序的问题是不是与实体按键,毕竟。相反,问题出在我尝试处理javascript/html中有关程式化标记的另一个弃用的Google(地图)功能。
我很抱歉这里的噪音。这个问题是由于我尝试作为javascript/html模板中的解决方法而尝试使用try..catch模式而导致无法使用/无法使用的。
编辑#1
这可能更适合于App Engine生产许可证,以便有人可以挖掘数据。我建议在这里提交一个错误:https://code.google.com/p/googleappengine/issues/entry?template=Production%20issue –
它不是一个错误。在迁移指南中详细记录了手动保存的id不会迁移,因为所有id将在hdr中更改。 –
关于我使用的过程,“手动保存”是什么?我使用了appengine自动化过程(正如我们在此讨论的那样)[http://stackoverflow.com/questions/24768891/]。 – zerowords