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

orientdb群集名称在v2.0中正常,但现在无效?,orientdb,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: se

我们最近从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中,实现了一个新的“严格SQL解析器”,它带来了以下新功能:

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

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


如果需要,您可以禁用新的解析设置strictSql=false请参见Studio->db tab

注意:我可以创建包含-个字符的集群,没有任何问题,只有在我尝试查询它们时才会出现错误。您好,我遇到了同样的问题,我认为这可能是一个错误,因为您可以使用其ID从集群中选择解决方案。从集群中选择:12所以我猜这是一个错误,我可以创建具有无效字符的集群,而不更改该设置?我认为是的,但报告称它是未来的修复。我尝试了从集群中选择*tdv-st-2014-01-19,但它不起作用,但看来你的建议确实有效。