最近使用国产数据库达梦,遇到一个大坑。
数据库有一个字段名称叫comment,sql是这样的:
CREATE TABLE "CFGC"."CFG_LABEL"
(
"ID" INT NOT NULL,
"COMMENT" VARCHAR(765),
"DEF" CHAR(21),
"NAME" VARCHAR(96) NOT NULL,
PRIMARY KEY("ID"))
可是在使用jpa的时候,查询报错:
2019-08-06 09:01:33.761 ERROR 5296 --- [nio-8001-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : 第 1 行, 第 37 列[comment]附近出现错误:
语法分析出错
2019-08-06 09:01:33.786 ERROR 5296 --- [nio-8001-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: could not prepare statement; SQL [select label0_.id as id1_0_, label0_.comment as comment2_0_, label0_.def as def3_0_, label0_.name as name4_0_ from cfg_label label0_]; nested exception is org.hibernate.exception.SQLGrammarException: could not prepare statement] with root cause
dm.jdbc.driver.DMException: 第 1 行, 第 37 列[comment]附近出现错误:
语法分析出错
at dm.jdbc.driver.DBError.throwException(Unknown Source) ~[DmJdbcDriver18.jar:- 8.1.0.147 - Production]
大概的意思是列对不上,很奇怪,报了个comment的错误,于是把commen字段删除,发现查询就正常了!
后来为了适配我只能改了下字段的名称,comment改成comment_:
CREATE TABLE "CFGC"."CFG_LABEL"
(
"ID" INT NOT NULL,
"COMMENT_" VARCHAR(765),
"DEF" CHAR(21),
"NAME" VARCHAR(96) NOT NULL,
PRIMARY KEY("ID"))
发现查询也是正常的