3
我想在Mongo中運行一些服務器端JS。我試圖執行的操作如下:異常:不能temprelease嵌套鎖
db.dropDatabase(); // removing current database
db.copyDatabase('db_dump', 'db', 'localhost'); // substituting it with a dump
一切正常,非常好。當我保存這個作爲一個功能:
function() {
db.dropDatabase();
return db.copyDatabase('db_dump', 'db', 'localhost');
}
,並執行它,一切都還不錯,返回我{"ok" : 1}
但是當我嘗試執行此使用PHP驅動程序:
$db->execute("function(){ db.dropDatabase(); return db.copyDatabase('db_dump', 'db', 'localhost'); }");
我得到
{
"retval": {
"errmsg":"exception: can't temprelease nested lock",
"code":10298,
"ok":0
},
"ok":1
}
我的第一個雖然是我只需要ge t出了鎖,所以我試過這個
$db->command(
array(
'$eval' => "function() { db.dropDatabase(); return db.copyDatabase('db_dump', 'db', 'localhost');}"
),
array(
'nolock'=> true
)
);
在這一點上沒有別的東西在使用數據庫。
任何想法如何擺脫這個錯誤?
我正在使用Mongo 2.4.4
,PHP 5.3.13
和driver 1.2.10
P.S.試過這個PHP 5.4.16
和情況是一樣的
,你可能要檢查[這](https://groups.google.com/forum/#!topic/mongodb的用戶/ GGLqwEsJwVg) – DevZer0