【问题标题】:Orientdb: Error executing live query subscriberOrientdb:执行实时查询订阅者时出错
【发布时间】:2018-02-24 23:34:40
【问题描述】:

Orientdb 在 Nullpointer 异常之后使用二进制协议在每个实时查询订阅上抛出:

执行实时查询订阅者时出错。 com.orientechnologies.orient.server.network.protocol.binary.OLiveCommandResultListener.onLiveResult 的 java.lang.NullPointerException(OLiveCommandResultListener.java:113) 在 com.orientechnologies.orient.core.sql.OCommandExecutorSQLLiveSelect$2.call(OCommandExecutorSQLLiveSelect.java:134) 在 com.orientechnologies.orient.core.sql.OCommandExecutorSQLLiveSelect.execInSeparateDatabase(OCommandExecutorSQLLiveSelect.java:144) 在 com.orientechnologies.orient.core.sql.OCommandExecutorSQLLiveSelect.onLiveResult(OCommandExecutorSQLLiveSelect.java:131) 在 com.orientechnologies.orient.core.query.live.OLiveQueryQueueThread.run(OLiveQueryQueueThread.java:69)

实时查询由一个客户端订阅:“从帐户中实时选择 CheckInDateTime 像“2018-02-25%””,Orientdb 也优雅地返回实时请求令牌 ID。但是,当另一个客户使用“update Account set CheckInDateTime = “2018-02-25 13:00:00””更新 Account 时,会抛出提到的 NullPointerexception。我尝试使用版本 2.2.30 和 2.2.32 社区、数据库管理员和服务器管理员帐户。插件的加载似乎也不起作用(即使使用的版本是 2.2.30 和 2.2.32,默认情况下应该在服务器上启用 Live Query)。似乎没有什么可以帮助完成这项工作,还有诸如“从帐户中实时选择”之类的查询(没有 where ...)。

还有什么想法吗?谢谢。

【问题讨论】:

    标签: orientdb livequery


    【解决方案1】:

    当前实时查询不支持您在查询中包含的 WHERE 子句。

    您只能选择整个集合或 V 和 E(这是我用来获取所有更新的)

    如果您想使用 where 进行过滤,您必须自己编写代码。

    【讨论】:

    • 您确定实时查询不支持“WHERE”子句吗?这个例子似乎另有说明:orientdb.com/docs/2.2.x/…
    • 这可能现在可以工作,但以前不能工作。如果此问题已解决,请随时编写新答案。我没有积极关注新的 OrientDB 更新。
    【解决方案2】:

    谢谢你回答米奇肯!幸运的是,我发现了错误。从客户端到 DB 的 TCP 连接处于错误状态(必须一直处于 waitforreadyread 状态)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-21
      • 1970-01-01
      • 1970-01-01
      • 2018-12-14
      • 2012-11-04
      • 2012-07-30
      • 1970-01-01
      相关资源
      最近更新 更多