2014-09-23 73 views
0

我与OrientDB(社区版V1.7-RC2)/ Oriento试验(0.4.0)OrientDB.RequestError:无法找到该命令请求的命令执行:SQL#11.1

功能

function linkChildToParent(oChild, oParent) { 
    return (
     oDB.edge.from(oChild).to(oParent) 
     .create({"@class": 'OrgUnit_isPartOf_OrgUnit'}) 
     .tap(log) 
     .return(oChild) 
    ); 
} 

与异常

C:\Users\Udo\workspace\NodeOrient\node_modules\oriento\node_modules\bluebird\js\main\async.js:93 
       throw res.e; 
         ^
OrientDB.RequestError: Cannot find a command executor for the command request: sql.#11.1 
    at Operation.parseError (C:\Users\Udo\workspace\NodeOrient\node_modules\oriento\lib\transport\binary\protocol\operation.js:806:13) 
    at Operation.consume (C:\Users\Udo\workspace\NodeOrient\node_modules\oriento\lib\transport\binary\protocol\operation.js:396:35) 
    at Connection.process (C:\Users\Udo\workspace\NodeOrient\node_modules\oriento\lib\transport\binary\connection.js:324:17) 
    at Connection.handleSocketData (C:\Users\Udo\workspace\NodeOrient\node_modules\oriento\lib\transport\binary\connection.js:250:17) 
    at Socket.emit (events.js:95:17) 
    at Socket.<anonymous> (_stream_readable.js:764:14) 
    at Socket.emit (events.js:92:17) 
    at emitReadable_ (_stream_readable.js:426:10) 
    at emitReadable (_stream_readable.js:422:5) 
    at readableAddChunk (_stream_readable.js:165:9) 
From previous event: 
    at Function.Promise$All [as all] (C:\Users\Udo\workspace\NodeOrient\node_modules\bluebird\js\main\promise.js:193:12) 
    at generateDependents (C:\Users\Udo\workspace\NodeOrient\setupOrgDB.js:202:35) 
From previous event: 
    at Function.Promise$Join [as join] (C:\Users\Udo\workspace\NodeOrient\node_modules\bluebird\js\main\join.js:118:15) 
    at BinaryTransport.populateDB (C:\Users\Udo\workspace\NodeOrient\setupOrgDB.js:219:20) 

所以我调试到驱动程序,直到我发现

失败

命令的内容return db.query(command);前右是

CREATE EDGE OrgUnit_isPartOf_OrgUnit FROM (#11.1) TO (#11.0) 

然后我用的(基于浏览器)的控制台来验证OrgUnit_isPartOf_OrgUnit实际上是从边缘继承。我也验证过它会将OrgUnit与OrgUnit顶点链接起来,并且OrgUnit是从顶点引出的。我还仔细检查了记录#11.1和#11.0实际存在于数据库中。

然后我在控制台发出

CREATE EDGE OrgUnit_isPartOf_OrgUnit FROM (#11.1) TO (#11.0) 

直接找来

com.orientechnologies.orient.core.command.OCommandExecutorNotFoundException: Cannot find a command executor for the command request: sql.#11:1 

这基本上是相同的异常。有了Google,我发现了一些Javadoc for this exception。然而,这并没有帮助我。

什么是错,我该如何解决?

回答

2

正确的命令应该没有括号。括号执行子查询:

CREATE EDGE OrgUnit_isPartOf_OrgUnit FROM #11:1 TO #11:0 

有关更多信息,请参阅Create Edge命令。

+0

有趣。现在我必须弄清楚为什么查询生成器会放入palenthesis。但这肯定是造成了这个问题。 – 2014-09-24 05:13:58