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