2014-12-04 8 views
6

Quindi sto aggiornando il driver java MongoDB a 2.12.4 dove il metodo ensureIndex() è stato deprecato. Sto invece usando il metodo createIndex() che sembra funzionare come i funciton similmente a ensureIndex(). Tuttavia, quando utilizzo questo metodo in produzione, viene visualizzato il seguente errore:L'indice esiste già con diverse opzioni di errore durante l'utilizzo di createIndex() nell'ultimo driver java MongoDB

{ "serverUsed" : "X.X.X.X" , "ok" : 0.0 , "errmsg" : "Index with name: <index_name> already exists with different options" , "code" : 85} 

Perché ciò accade? Qualcuno potrebbe aiutarmi con questo?

Grazie

risposta

8

Provare a rimuovere gli indici attuali prima di creare i nuovi.

Se siete preoccupati per i tempi di inattività della produzione ecc per questi indici, si potrebbe:

  1. Aggiungere un secondo indice, proprio come quello che hai sulla produzione ora con un nome diverso.
  2. cancellare quella esistente
  3. riavviare il server in modo che l'indice nel codice Java viene creato come previsto
  4. eliminare l'indice duplicato.
4

La risposta di Will Shaver è molto buona, ma in realtà non affronta il problema che sta evidenziando il gravetii.

createIndex non riuscirà con questo errore se si sta tentando di creare un indice sugli stessi campi, con lo stesso ordine, ma con diverse opzioni. Questo perché le opzioni degli indici possono far sì che l'indice abbia proprietà molto diverse. Ciò è evidente quando si considera un indice con il flag unique.

Se si chiama createIndex con gli stessi campi, lo stesso ordine e le stesse opzioni, si comporterà come previsto; non apportare modifiche agli indici della raccolta e non genererà un'eccezione.

Problemi correlati