2014-09-23 101 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