You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache Ignite关联查询无结果:是Bug还是操作疏漏?

Apache Ignite关联查询无结果问题排查

问题现象

在单节点环境的Apache Ignite 2.14.0和2.10.0版本中执行关联查询时,未添加账户ID过滤条件的语句无任何结果返回,但添加该条件后可正常返回对应行。

对比查询语句

无结果的查询语句

SELECT * FROM PERSON AS p, ACCOUNT AS a
WHERE 
p.ACCOUNT_ID = a.id
AND 
p.ID = '4nFwLM9FRxKZJb4V9vtdlw'

正常返回的查询语句

SELECT * FROM PERSON AS p, ACCOUNT AS a
WHERE 
p.ACCOUNT_ID = a.id
AND 
p.ID = '4nFwLM9FRxKZJb4V9vtdlw'
AND a.id = 'wZvcAnbBSpOps9oteH-Oxw'

涉及表结构

CREATE TABLE umm_person (
    id varchar(36) NOT NULL primary key,
    account_id varchar(36) NOT NULL
);
CREATE INDEX idx_person_account_id ON umm_person (account_id);

CREATE TABLE main_account (
    id varchar(36) NOT NULL primary key,
);

节点配置代码

public class IgniteNode {

    public static void main(String[] args) throws Exception {
        IgniteConfiguration cfg = new IgniteConfiguration();
        cfg.setClientMode(false);
        cfg.setPeerClassLoadingEnabled(true);
        cfg.setCacheConfiguration();
        Ignition.start(cfg);
    }
} 

问题分析

最直接的操作疏漏是查询语句使用的表名与实际创建的表名不匹配:

  • 查询中写的是PERSON和ACCOUNT
  • 实际建表的名称是umm_person和main_account

Ignite SQL默认对表名大小写敏感(除非配置sql.schema.case-insensitive参数为true),这会导致查询时找不到对应表,自然无结果返回。而添加a.id = 'wZvcAnbBSpOps9oteH-Oxw'后看似正常,大概率是测试时的误操作导致(比如临时改用了正确表名),建议先将查询语句中的表名修正为实际创建的umm_person和main_account再测试。

另外,节点配置里cfg.setCacheConfiguration();未传入任何缓存配置,单节点环境下Ignite会用默认配置创建表对应缓存,这部分不是核心问题,但建议显式配置缓存以避免后续潜在异常。

内容的提问来源于stack exchange,提问作者MarianP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 04:37:31