注册

dm.jdbc.driver.DMException: 无效的列

碎影 2024/01/30 2569 14 已解决

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:centos7.6
【CPU】:
【问题描述】*:
使用mybatis plus 的insert语句报错,但复制SQL到dm工具里执行没问题
数据库大小写敏感
驱动版本:Dameng JDBC Driver V8.1.3.100-Build(2023.12.14-20748-)
报错信息如下:

org.springframework.dao.DataIntegrityViolationException: ### Error updating database. Cause: dm.jdbc.driver.DMException: 无效的列 ### The error may exist in com/resettle/server/mapper/AccInfSpecMapper.java (best guess) ### The error may involve com.resettle.server.mapper.AccInfSpecMapper.insert-Inline ### The error occurred while setting parameters ### SQL: INSERT INTO RESETTLEMENT."accInfSpec" ( "accInfSpecName", "accInfSpecUnit", "accSpecification", "notes" ) VALUES ( ?, ?, ?, ? ) ### Cause: dm.jdbc.driver.DMException: 无效的列 ; 无效的列; nested exception is dm.jdbc.driver.DMException: 无效的列

这是对象:

@Data @EqualsAndHashCode(callSuper = false) @AllArgsConstructor @NoArgsConstructor @TableName(value = "RESETTLEMENT.\"accInfSpec\"") @ApiModel(value="AccInfSpec对象", description="附属物信息规范") public class AccInfSpec implements Serializable { private static final long serialVersionUID = 1L; @TableId(value = "accInfSpecId", type = IdType.AUTO) private int accInfSpecId; private String accInfSpecName; private String accInfSpecUnit; private String accSpecification; private String notes; private Timestamp createtime; }

这是查询:

@Override public Boolean setAccInfSpec(AccInfSpec accInfSpec) { try { accInfSpecMapper.insert(accInfSpec); return true; } catch (Exception e) { System.out.println(e); throw new ServiceException(ErrorEnum.DATABASE_ERROR); } }

详细的数据库日志如下:

[DEBUG - 2024-01-30 22:20:14] tid:38 - [http-nio-9081-exec-4] { conn-1 } access(); CMD_PREPARE [SQL - 2024-01-30 22:20:14] tid:38 - [http-nio-9081-exec-4] { conn-1 } prepareStatement(String, String[]): pstmt-5, handle-0; [PARAMS]: "INSERT INTO RESETTLEMENT."accInfSpec" ( "accInfSpecName", "accInfSpecUnit", "accSpecification", "notes" ) VALUES ( ?, ?, ?, ? )", [Ljava.lang.String;@252ec386; [INFO - 2024-01-30 22:20:14] tid:38 - [http-nio-9081-exec-4] { conn-1, pstmt-5 } setString(Integer, String); [PARAMS]: 1, "空调"; [INFO - 2024-01-30 22:20:14] tid:38 - [http-nio-9081-exec-4] { conn-1, pstmt-5 } setString(Integer, String); [PARAMS]: 2, "台"; [INFO - 2024-01-30 22:20:14] tid:38 - [http-nio-9081-exec-4] { conn-1, pstmt-5 } setString(Integer, String); [PARAMS]: 3, "挂式"; [INFO - 2024-01-30 22:20:14] tid:38 - [http-nio-9081-exec-4] { conn-1, pstmt-5 } setString(Integer, String); [PARAMS]: 4, "测试set接口"; [DEBUG - 2024-01-30 22:20:14] tid:38 - [http-nio-9081-exec-4] { conn-1 } access(); CMD_EXECUTE2 [ERROR - 2024-01-30 22:20:14] tid:38 - [http-nio-9081-exec-4] { conn-1, pstmt-5 } execute(); dm.jdbc.driver.DMException: 无效的列 at dm.jdbc.driver.DBError.throwException(DBError.java:711) at dm.jdbc.a.b.o.x(MSG.java:591) at dm.jdbc.a.b.o.C(MSG.java:526) at dm.jdbc.a.b.o.B(MSG.java:507) at dm.jdbc.a.a.a(DBAccess.java:245) at dm.jdbc.a.a.a(DBAccess.java:944) at dm.jdbc.a.a.a(DBAccess.java:813) at dm.jdbc.driver.DmdbPreparedStatement.executeInner(DmdbPrepare

这是数据库表结构

CREATE TABLE "RESETTLEMENT"."accInfSpec" ( "accInfSpecId" INT IDENTITY(1, 1) NOT NULL, "accInfSpecName" VARCHAR(30) NOT NULL, "accInfSpecUnit" VARCHAR(8) NOT NULL, "accSpecification" VARCHAR(60) NOT NULL, "notes" VARCHAR(200) DEFAULT '', "createtime" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP, NOT CLUSTER PRIMARY KEY("accInfSpecId")) STORAGE(ON "MAIN", CLUSTERBTR) ; COMMENT ON TABLE "RESETTLEMENT"."accInfSpec" IS '附属物信息规范'; COMMENT ON COLUMN "RESETTLEMENT"."accInfSpec"."accInfSpecId" IS '附属物规范Id'; COMMENT ON COLUMN "RESETTLEMENT"."accInfSpec"."accInfSpecName" IS '附属物名称'; COMMENT ON COLUMN "RESETTLEMENT"."accInfSpec"."accInfSpecUnit" IS '附属物计量单位'; COMMENT ON COLUMN "RESETTLEMENT"."accInfSpec"."accSpecification" IS '附属物规格';
回答 0
暂无回答
扫一扫
联系客服