我们最近从v2.0升级到v2.1.9,我们突然无法查询我们的群集。这个查询:
select * from cluster:tdv-st-2014-01-19
在2.0(及更早版本)中运行良好,但现在我们得到(在控制台和Java API中):
Error: com.orientechnologies.orient.core.sql.OCommandSQLParsingException: Error on parsing command at position #0: Error parsing query:
select * from cluster:tdv-st-2014-01-19
Encountered " "-" "- "" at line 1, column 26.
Was expecting one of:
<EOF>
<WHERE> ...
<ORDER> ...
<GROUP> ...
<LIMIT> ...
<SKIP2> ...
<OFFSET> ...
<TIMEOUT> ...
<FETCHPLAN> ...
<LOCK> ...
<LET> ...
<NOCACHE> ...
<PARALLEL> ...
<UNWIND> ...
";" ...
<LET> ...
<WHERE> ...
<GROUP> ...
<ORDER> ...
<UNWIND> ...
<SKIP2> ...
<OFFSET> ...
<LIMIT> ...
<FETCHPLAN> ...
<TIMEOUT> ...
<LOCK> ...
<PARALLEL> ...
<NOCACHE> ...
看起来它不再喜欢群集名称中的“ - ”字符?我们已尝试引用群集名称等,但尚未找到使此查询起作用的方法。有人有想法吗?
答案 0 :(得分:1)
你是怎么引用它的?你有没有试过backtik?
select * from `cluster:tdv-st-2014-01-19`
答案 1 :(得分:1)
在新版本2.1.x中已经实现了一个新的严格的SQL解析器&#39;它带来了以下新功能:
***) - 作为标识符(属性和类名)的有效字符:在旧实现中,您可以定义一个属性名称,如&#34; simple-name&#34;并执行simple-SELECT name FROM Foo。因为 - 字符用于算术运算(减法),所以不允许这样做。要使用带 - 字符的名称,请使用反引号。示例:SELECT simple-name
FROM Foo
所以&#39; - &#39;不是标识符的有效字符(以避免与减法冲突) 见link
如果需要,可以禁用新的解析设置strictSql = false(参见Studio - &gt; db tab)