代码之家  ›  专栏  ›  技术社区  ›  8forty

orientdb集群名称在v2.0中是正常的,但现在无效了?

  •  1
  • 8forty  · 技术社区  · 10 年前

    我们最近从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 回复  |  直到 10 年前
        1
  •  1
  •   lsavio    10 年前

    在新版本2.1.x中,实现了一个新的“Strict SQL解析器”,它带来了以下新功能:

    ***)-作为标识符(属性和类名)的有效字符:在旧的实现中,您可以定义类似“简单名称”的属性名,并执行简单的SELECT名称FROM Foo。这是不允许的,因为-字符用于算术运算(减法)。要使用带有-字符的名称,请使用反勾号。示例:SELECT simple-name 来自Foo

    因此“-”不是标识符的有效字符(以避免与减法冲突) 看见 link

    如果需要,可以禁用新的解析设置strictSql=false(请参见Studio->db选项卡)

        2
  •  1
  •   Lvca    10 年前

    你是怎么引用的?你已经试过backtik了吗?

    select * from `cluster:tdv-st-2014-01-19`