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

orientdb cluster names were ok in v2.0 but are now invalid?

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

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

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

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

在新版本 2.1.x 中实现了一个新的 'Strict SQL parser',它带来了以下新功能:

***) - 作为标识符的有效字符(属性 和 class 名称):在旧实现中,您可以定义一个 属性 名称,例如 "simple-name" 并执行 simple-SELECT name FROM Foo。这不再被允许,因为 - 字符用于算术运算(减法)。要使用带有 - 字符的名称,请使用反引号。示例:SELECT simple-name 来自 Foo

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

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