最近测试创建一个涛思的数据库和一堆表进行测试,通过json配置文件配置字段的类型、名称等,程序通过解析json文件的配置,动态创建数据库的表。
其中表字段为驼峰结构的规则命名,创建表也是成功的,插入的测试数据也是成功,但查询的时候,除了表字段为小写的部分可以查询出结构,其他的带有大写字母的字段信息无法查询,甚是疑惑,参考有经验的大师的评论,整理一下问题的解决方法,分享给大家。
如果正常的查询sql语句,执行之后提示:DB error: invalid operation: invalid column name
问题截图如下:
问题描述:
当前表的描述中,存在列”pStatus”,但是通过语句 “select ts,pStatus from jiningzhongchang.equipment_cjk1620_1 ;”指定列来进行查询时,却返回错误 “DB error: invalid operation: invalid column name”
主要原因是建表的时候,字段被单引号扩住了,
例如:create table car_currentdata.cur_bus_123(`dtinserttim` timestamp,`fMonFillEnePro` float);
该语句可以成功创建表, 并且也可以插入数据成功,但是查询fMonFillEnePro数据时候,就会失败,提示“DB error: invalid operation: invalid column name”, 因为`fMonFillEnePro`方式建表的时候,该字段不会自动转为小写名称;
建表语句修改如下:create table car_currentdata.cur_bus_123(dtinserttim timestamp,fMonFillEnePro float);
终端执行:desc car_currentdata.cur_bus_123;
会看到表的该字段自动变为小写的方式,然后查询该字段的数据信息,就会正常显示。当然操作该表的时候,字段自然也需要使用小写的方式。
涛思数据建表的字段自动转换为小写,可能是数据库的规范操作,没有深究为什么,如果有知道的朋友,可以给我评论,多谢。