sto cercando di interrogare l'archivio dati, e la mia domanda è simile al seguente:Problemi con query GQL, Google Datastore. Errore con più condizioni e maggiore e minore di operatori
SELECT *
FROM mydb
WHERE Latitude = "18.1" AND Number > "1"
Non funziona però. Ottengo questo errore nella casella di ricerca Datastore:
GQL query error: Your Datastore does not have the composite index (developer-supplied) required for this query.
E questo errore quando ho eseguito il mio codice:
no matching index found. recommended index is:\n- kind: mydb\n properties:\n - name: Location\n - name: Number\n
richieste semplici come questo lavoro:
SELECT *
FROM mydb
WHERE Number > "1" AND Number < "5"
sto solo accedendo una singola colonna qui forse è per questo?
No,
Poi ho provato una richiesta del genere:
SELECT *
FROM mydb
WHERE Latitude = "18.1" AND Number = "1"
Questo ha funzionato.
ho provato a cercare una soluzione e mi sono imbattuto in questa pagina: https://cloud.google.com/datastore/docs/tools/indexconfig#Datastore_About_index_yaml
Dopo aver attraversato la pagina, ho capito che ho bisogno di un file index.yaml da qualche parte. Dovrebbe andare in una cartella chiamata WEB-INF. Ma non ho questa cartella.
Si tratta di un piccolo frammento del mio codice:
Query<Entity> query = Query
.gqlQueryBuilder(Query.ResultType.ENTITY,
"SELECT * FROM " + kind + " WHERE Location = @location AND Number <= @number")
.setBinding("number", "5").setBinding("location", "18.1").build();
QueryResults<Entity> results = datastore.run(query);
Dove si trova il tuo 'appengine-web.xml'? – Nicholas
@Nicholas Non ce l'ho da nessuna parte, il mio programma può essere distribuito ed eseguito senza di esso. –
Puoi pubblicare la struttura completa della directory della tua applicazione? – Nicholas