zoukankan      html  css  js  c++  java
  • 记一次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中表名、字段名大小写问题





    原创不易,转载请注明出处,谢谢
  • 相关阅读:
    Docker Private Registry
    Dockerfile
    docker存储卷
    392. 判断子序列
    1576. 替换所有的问号
    270. 最接近的二叉搜索树值
    292. Nim 游戏
    680. 验证回文字符串 Ⅱ
    876. 链表的中间结点
    543. 二叉树的直径
  • 原文地址:https://www.cnblogs.com/Keeping-Fit/p/15164294.html
Copyright © 2011-2022 走看看