Hi Albert, On Wed, Feb 2, 2011 at 12:44 PM, Albert <[email protected]> wrote:
> Hi! > > I just migrated to the High Replication datastore. > > Some of my entities contain stringified keys of other entities. > > For example: > > Entity(db.Model): > owner = db.StringProperty() # the str(Key) of the owner. > > > Owner(db.Model): > name = db.StringProperty() > > Now that I've migrated to the high-replication datastore, all the > stringified keys in the Entity Model contain bad keys because the > Owner Entities have new keys now. > The migration tool rewrites the App ID of keys, but only if they're stored as keys (or reference properties). This is one reason why you shouldn't store stringified keys in the datastore! > 2 questions: > > 1. Would this have been prevented by using db.ReferenceProperty() > instead? > Yes. > 2. How can I resolve this issue? I need to update all entities to > contain the new keys instead. > You should probably use the mapreduce library. For your mapper function, deserialize the key, and construct a new one with the correct App ID (you can simply use db.Key.from_path to do this, as it will fill in the App ID for you) then store it again. You might want to move to using ReferenceProperties when you do this. -Nick Johnson > Thanks! > > -- > You received this message because you are subscribed to the Google Groups > "Google App Engine" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]<google-appengine%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/google-appengine?hl=en. > > -- Nick Johnson, Developer Programs Engineer, App Engine Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number: 368047 -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
