0

Ich arbeite an einer Google App Engine-Anwendung in Python. Ich habe versucht, eine Abfrage, die ich für eine meiner Routen ausgeführt habe, so zu ändern, dass nur eine Eigenschaft statt 2 abgefragt wird. Dies führte dazu, dass bei jeder Abfrage ein Indexierungsfehler auftrat.BadValueError: Entität hat nicht initialisierte Eigenschaften ___ nach dem Zurücksetzen von Indizes und Löschen von Memcache

Es war etwas in der Art von "Kein Index, der zu den angegebenen Parametern passt", aber im Moment habe ich keine Screenshots. Um die Situation zu bereinigen, haben wir appcfg.py vacuum_indices ausgeführt und alle mit der ursprünglichen Suche verbundenen Indizes gelöscht. Wir haben dann einen neuen index.yaml hochgeladen, der den neuen Index angibt. Obwohl wir sehen konnten, dass die neuen Indizes tatsächlich im Admin-Panel erstellt wurden und die alten weg waren, erhielten wir immer noch denselben Fehler.

Wir sind uns nicht sicher, warum das so ist, und haben Probleme, online Dokumentationen zu diesen Problemen zu finden. Unser nächster Gedanke war, dass ein früherer Zustand in Memcache dazu führte, dass die Abfrage versuchte, den alten Index zu verwenden. So gespült wir memcache, und jetzt sind wir diesen Fehler:

File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1535, in __call__ 
    rv = self.handle_exception(request, response, e) 
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1529, in __call__ 
    rv = self.router.dispatch(request, response) 
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1278, in default_dispatcher 
    return route.handler_adapter(request, response) 
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1102, in __call__ 
    return handler.dispatch() 
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 572, in dispatch 
    return self.handle_exception(e, self.app.debug) 
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 570, in dispatch 
    return method(*args, **kwargs) 
File "/base/data/home/apps/s~dev-erpetcloud2/dev1.392600188150722624/routes/users.py", line 172, in post 
    res_dict = cp_user.to_dict() 
File "/base/data/home/apps/s~dev-erpetcloud2/dev1.392600188150722624/routes/models/../models/cp_models.py", line 248, in to_dict 
    animal_dict = animal.to_dict() 
File "/base/data/home/apps/s~dev-erpetcloud2/dev1.392600188150722624/routes/models/../models/cp_models.py", line 574, in to_dict 
    protocol, params = self.get_protocol_and_params() 
File "/base/data/home/apps/s~dev-erpetcloud2/dev1.392600188150722624/routes/models/../models/cp_models.py", line 395, in get_protocol_and_params 
    record = self.protocol_state_key.get() 
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/key.py", line 572, in get 
    return self.get_async(**ctx_options).get_result() 
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/tasklets.py", line 342, in get_result 
    self.check_success() 
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/tasklets.py", line 389, in _help_tasklet_along 
    value = gen.send(val) 
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/context.py", line 765, in get 
    pbs = entity._to_pb(set_key=False).SerializePartialToString() 
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/model.py", line 3158, in _to_pb 
    self._check_initialized() 
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/model.py", line 3014, in _check_initialized 
'Entity has uninitialized properties: %s' % ', '.join(baddies)) 
BadValueError: Entity has uninitialized properties: title 

Blick durch den Datenspeicher, das Unternehmen, dass diese Spur Verweise auf jeden Fall haben einen ‚Titel‘ Eigentum.

Ich habe mich schon lange nach Fehlern erkundigt, die beim Löschen von Indizes und dem Löschen von Memcache auftreten können, und nichts Nützliches ist aufgetaucht.

Wenn jemand mir vielleicht ein wenig Einblick geben könnte, was hier passieren könnte und wie diese Systeme funktionieren (mein mentales Modell wäre vielleicht ausgeschaltet), oder mich in die richtige Richtung weisen, wäre das fantastisch. Vielen Dank!!

Antwort

1

Dieser Fehler bedeutet, dass die Eigenschaft 'title' als erforderliche Eigenschaft angegeben wurde, Sie jedoch versuchen, eine Entität in den Datenspeicher zu schreiben, ohne diese Eigenschaft zu initialisieren. Dieser Fehler tritt nur zum Zeitpunkt put() auf. Haben Sie irgendwelche Änderungen an der Entitätsdefinition oder an einem Teil des Codes vorgenommen, der diese Entitäten in den Datenspeicher schreibt?

Edit: Der Fehler kann auch beim Versuch, eine Entität zu lesen, die keinen Wert für eine Eigenschaft 'erforderlich' angegeben hat, auftreten.

+0

Das ist die Sache, wir haben diese Entity-Definition nicht geändert. In der Tat ging ich selbst durch den Datenspeicher, um sicherzustellen, dass das, was es herauszuholen versuchte, tatsächlich diese Eigenschaft hatte. – bgenchel

+0

Okay, in welchem ​​Szenario sehen Sie diesen Fehler? Können Sie außerdem bestätigen, dass die Eigenschaft 'title' immer als 'required' (Pflicht) angegeben und nicht immer geändert wurde? – mng

+0

Ich kann nicht bestätigen, dass ich jedoch bestätigen kann, dass die Daten, die es zu erhalten versucht, ein Titelfeld haben und dass dieses Feld initialisiert wird. – bgenchel