无法重新创建同名的 mongo 索引
Unable to recreate a mongo index with the same name
我有一个索引需要修改。
{
"v" : 1,
"key" : {
"expectedDateTime" : 1
},
"name" : "expectedDateTime_1",
"ns" : "expectation.expectation_data",
"expireAfterSeconds" : 43200
}
expireAfterSeconds不正确,需要改为432000。
当我删除索引时它看起来很好
db.expectation_data.dropIndex({"expectedDateTime":1})
{ "nIndexesWas" : 4, "ok" : 1 }
getIndexes() 显示索引不存在。
然后当我尝试重新创建索引时出现此错误
db.expectation_data.createIndex({"expectedDateTime":1},
{expireAfterSeconds:432000,name:"expectedDateTime"});
{
"ok" : 0,
"errmsg" : "Index with name: expectedDateTime already exists with different options",
"code" : 85
}
现在在 运行 getIndexes() 上,我看到索引似乎是用旧的 TTL 重新创建的。我尝试多次重复这个过程,但 运行 一次又一次地陷入同一个问题。
我找不到任何说明我无法重新创建同名索引的文档。如果我使用不同的名称,它可以正常工作
db.expectation_data.createIndex({"expectedDateTime":1}, {expireAfterSeconds:432000});
.
.
>db.expectation_data.getIndexes()
.
.
{
"v" : 1,
"key" : {
"expectedDateTime" : 1
},
"name" : "expectedDateTime_1",
"ns" : "expectation.expectation_data",
"expireAfterSeconds" : 432000
}
重新创建同名索引有什么限制吗?
事实证明。这是由于在具有旧超时的实体中使用了 @Index 注释。当我更改索引时,应用程序仍然是 运行。
当我停止应用程序时,我能够按照我最初的预期创建索引
这看起来像是删除后自动重新创建的索引。确保没有使用 ensureIndex
或 @Index
-注释的应用程序正在连接到数据库。
我有一个索引需要修改。
{
"v" : 1,
"key" : {
"expectedDateTime" : 1
},
"name" : "expectedDateTime_1",
"ns" : "expectation.expectation_data",
"expireAfterSeconds" : 43200
}
expireAfterSeconds不正确,需要改为432000。
当我删除索引时它看起来很好
db.expectation_data.dropIndex({"expectedDateTime":1})
{ "nIndexesWas" : 4, "ok" : 1 }
getIndexes() 显示索引不存在。
然后当我尝试重新创建索引时出现此错误
db.expectation_data.createIndex({"expectedDateTime":1},
{expireAfterSeconds:432000,name:"expectedDateTime"});
{
"ok" : 0,
"errmsg" : "Index with name: expectedDateTime already exists with different options",
"code" : 85
}
现在在 运行 getIndexes() 上,我看到索引似乎是用旧的 TTL 重新创建的。我尝试多次重复这个过程,但 运行 一次又一次地陷入同一个问题。
我找不到任何说明我无法重新创建同名索引的文档。如果我使用不同的名称,它可以正常工作
db.expectation_data.createIndex({"expectedDateTime":1}, {expireAfterSeconds:432000});
.
.
>db.expectation_data.getIndexes()
.
.
{
"v" : 1,
"key" : {
"expectedDateTime" : 1
},
"name" : "expectedDateTime_1",
"ns" : "expectation.expectation_data",
"expireAfterSeconds" : 432000
}
重新创建同名索引有什么限制吗?
事实证明。这是由于在具有旧超时的实体中使用了 @Index 注释。当我更改索引时,应用程序仍然是 运行。
当我停止应用程序时,我能够按照我最初的预期创建索引
这看起来像是删除后自动重新创建的索引。确保没有使用 ensureIndex
或 @Index
-注释的应用程序正在连接到数据库。