记一次Postgresql的毒打

背景

beego orm + pgsql + powerDesigner

过程

今天,在使用beego orm读数据库时,死活读不上数据,调源码时发现是tag匹配不上数据库里的字段
一看,pgsql里的字段全是小写
可是我在powerDesigner里设计CDM时,用的是驼峰命名,问题不在这
再往下查,生成的PDM也是驼峰的
继续往下看建表的SQL脚本,依旧是驼峰的
难道是pgsql的问题?

再通过Navicat写点SQL,字段全弄成驼峰形式,查询没问题,字段全弄成大写,查询也没问题
基本破案了,在处理sql时,pgsq大小写不敏感,处理的时候都弄成小写去处理了

影响

虽说可以通过双引号的方式让pgsql接受大写字母,但如果是powerDesigner生成建表语句,就没办法生成驼峰的字段...
一旦再设计CDM或PDM时添加双引号,生成出来的SQL语句,将会被加上额外的双引号...直接没法执行

所以在通过powerDesigner设计表结构时,最好使用下划线命名法,以避免数据库更换带来的坑

解决办法

  • 更改结构体内orm tag为小写,工作量巨大,而且换库之后还会重演悲剧
  • 为字段添加别名, 别名加上双引号,工作量同样巨大,哭了
  • 换NodeJs(皮一下,脚本语言在这方面还是有优势的,但,当赋值错了,函数参数顺序不对,参数个数不对。。查问题时,就有得哭了)

参考

PostgreSQL中表名、字段名大小写问题





原创不易,转载请注明出处,谢谢
原文地址:https://www.cnblogs.com/Keeping-Fit/p/15164294.html