orientdb集群名称在v2.0中没问题,但现在无效了?

时间:2016-01-25 18:47:15

标签: orientdb

我们最近从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> ...

看起来它不再喜欢群集名称中的“ - ”字符?我们已尝试引用群集名称等,但尚未找到使此查询起作用的方法。有人有想法吗?

2 个答案:

答案 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)