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

使用Java+TestNG调用GET接口时遇PostgreSQL列不存在错误求助

问题排查:PostgreSQL找不到application列的解决方案

已完成操作

  • 测试前置准备:在@Before方法中通过POST接口创建品类利润率设置,调用GET API获取列表,预期响应包含xyz列:
    {"totalCount": 3418,"totalPages": 7,"data": [{"field1": 1,"field2": "ABC","field3": 904,"field4": "aa","XYZ": "1"}]}
    
  • 添加Getter/Setter:在模型类中为xyz字段添加注解及方法:
    @JsonProperty("xyz")
    public String getXyz() {
        return xyz;
    }
    
    @JsonProperty("xyz")
    public void setXyz(String xyz) {
        this.xyz = xyz;
    }
    
  • 更新测试断言:新增对xyz字段的断言逻辑:
    softAssert.assertEquals(setting.getXyz(), CategorySettingDAOFunctions.getXyz(), "xyz value is not equal");
    
  • 更新DAO查询:修改selectCategoryMarginSettingFromId方法的SELECT语句,加入XYZ列,并在ResultSet中读取该值:
    try {
        conn = DatabaseUtil.getConnection();
        preparedStatement = conn.prepareStatement(selectQuery);
        ResultSet rs = preparedStatement.executeQuery();
        while (rs.next()) {
            xyz = rs.getString("xyz");
        }
    }
    
    更新后的SELECT语句:
    SELECT 
        column_1, 
        column_2, 
        column_3, 
        column_4, 
        column_5, 
        column_6, 
        column_7, 
        column_8, 
        column_9, 
        column_10, 
        column_11, 
        column_12, 
        column_13, 
        column_14, 
        column_15, 
        XYZ, 
        column_17, 
        column_18, 
        column_19 
    FROM table_A  
    LEFT JOIN table_B ON table_A.ref_id = table_B.id  
    LEFT JOIN table_C ON table_C.id = table_A.other_ref_id  
    LEFT JOIN table_D ON table_D.id = table_C.region_id  
    LEFT JOIN table_E ON table_E.id = table_C.market_id  
    WHERE table_A.type = 1  
    AND table_A.status = 1  
    AND table_A.id = %s;
    

报错信息

严重错误:
org.postgresql.util.PSQLException: ResultSet中未找到列名application。

解决方案

  1. 定位代码位置:检查所有处理ResultSet的DAO代码,找到调用rs.getString("application")(或类似读取application列)的逻辑——你的SELECT查询未包含该列,但代码中尝试读取它,导致报错。
  2. 处理列缺失问题:
    • 如果application是业务需要的字段:在SELECT语句中添加该列(注意指定所属表,比如table_B.application,避免多表同名冲突);同时确认数据库对应表中存在该列,且列名大小写与代码、查询语句一致(PostgreSQL对大小写敏感)。
    • 如果application是冗余代码:直接删除读取该列的语句即可。
  3. 验证生效:清理项目编译缓存,重新编译后运行测试,确认报错消除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 20:23:13