Samstag, Februar 22, 2020

Index bereits vorhanden ist mit verschiedenen Optionen Fehler bei der Verwendung von createIndex() in der aktuellen MongoDB-java-Treiber

So, ich bin Upgrade der MongoDB-java-Treiber zu 2.12.4 wo die ensureIndex() Methode ist veraltet. Ich bin stattdessen mit dem createIndex() Methode, die von den docs scheint wie für funciton ähnlich wie ensureIndex(). Jedoch, wenn ich diese Methode in der Produktion, bekomme ich die folgende Fehler –

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

Warum geschieht dies? Könnte mir jemand helfen mit diesem?

Dank

InformationsquelleAutor gravetii | 2014-12-04

2 Kommentare

  1. 8

    Versuchen Sie, Ihre aktuellen Indizes, bevor Sie die neue.

    Wenn Sie sich sorgen um Ausfallzeiten in der Produktion usw für diese Indizes könnten Sie:

    1. Fügen Sie einen zweiten index genauso wie die, die Sie haben auf die Produktion jetzt
      mit einem anderen Namen.
    2. löschen Sie die vorhandene
    3. starten Sie den server neu, so dass der index in Java-code erstellt wird, wie erwartet,
    4. löschen Sie Ihre doppelten index.
  2. 5

    Wird Shaver ‚ s Antwort ist sehr gut, allerdings nicht wirklich gegen das Problem der gravetii wird hervorgehoben.

    createIndex wird mit diesem Fehler fehlschlagen, wenn Sie versuchen, einen index erstellen, der auf die selben Felder, mit der gleichen Reihenfolge, aber mit unterschiedlichen Optionen. Dies ist, weil die Indizes Optionen dazu führen, dass der index sehr unterschiedliche Eigenschaften. Dies wird offensichtlich, wenn man bedenkt, ein index mit den unique Flagge.

    Wenn Sie anrufen createIndex mit den gleichen Feldern, die gleiche Reihenfolge und die gleichen Optionen, es wird sich Verhalten, als Sie erwarten; keine änderung der Auflistung der Indizes, und es wird nicht werfen eine Ausnahme.

Kostenlose Online-Tests