pgsql数据库的坑点记录

一、背景

pgsql数据库呢我也是第一次用,由于公司项目需要使用这个数据库对项目进行开发,所以我这里记录一下我第一次使用这个库的所有坑点,有几个坑点让我项目几乎重构一遍。所以也是写该文章提醒小白使用前的主要事项,我这里的坑点肯定是有办法解决的,最近还没有仔细在网上查找方案。

二、情况问题

1、id自增没有mysql那么简单就可以进行设置,这里我要说的是这个库对id自增这块做的有点类似于oracle,需要自己构建一个序列,然后让字段指定序列之后,才可以实现自增。具体方式如下:

我现在有一个user表,那么我的序列开始构建

CREATE SEQUENCE public.user_id_seq
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;
ALTER TABLE public.user_id_seq
  OWNER TO postgres;

这就是构建序列的sql语句,如果大家复制的话需要注意的是postgres是库名,注意修改,不然肯定报错。user_id_seq是你自己定义的名字可以自己随便取,但是等会你要用的时候要记得。下面我们去id那里指定。

注意我红色部分,在这指定刚刚自己定义的序列就可以实现id自增了,所以我说这个是比较麻烦的点。

2、查询分页的注意事项,这里就比oracle数据库又好了一点,起码它还是有limit  这种sql语句可以使用的,下面是我写分页的示例

SELECT * FROM user limit  2  offset  1;

刚开始我百度出来这种语句还挺开心的,以为和mysql一样使用就行了,结果,哈哈又想多了,这里我们需要注意的是前面是数字2代表这一页查询多少数据,后面数字1代表的居然是从本表中的第几个数据开始查询,而不是mysql一样第几页开始,如果要第几页开始要1*2然后再查,下面是改造之后的sql请注意。

SELECT * FROM user limit  2  offset  1*2;

反正这里可能一下也说不清楚,反正到时候如果小白自己遇到可能需要自己领悟一下,解决起来也不是很麻烦。

3、使用mybatis框架时表字段的下划线问题,这才是最坑的点,如果我们表字段取名使用了下划线,在库里面一点问题没有,sql语句也执行正常,但是我们用到了mybatis对项目开发的时候,我们的xml文件无论怎么写,都是查找不出这条数据的,这里也是我项目中遇到的最大的坑点,简直吐槽,我也没有找到合适的解决方案,希望知道的大神联系我分享下经验。本次开发项目的解决办法是表重新改了字段名字,取名全部修改,然后对项目重新整理代码,总之和我重新写过一次一样,坑点简直加班加点改。

新增:问题三的解决方案,sql语句使用的时候字段名加上双引号可以解决,博主这里使用的是mybatis代码反向生成所以这个方法一直没发现。

补充问题,pgsql的字段名称出现大小的命名,出现的问题和下划线会一样,解决方法也一样,该方法还适用于,字段使用了关键字,比如sql语句里面的一些单词,加上双引号也可以解决。

三、总结

对于这个刚接触的数据库,其实我的想法是按照我原来的技术进行分析使用,对比了mysql和oracle的使用方式,找出不同点和类似点,然后直接使用,当然这样确实很方便,但有时候我们不要有想当然,毕竟是不同的产品肯定是有不一样的特点的,使用的时候我就是太想当然了,所以没有全面的了解这个库就开始对项目进行开发了,以至于在过程中遇到的问题解决起来都比较麻烦。

猜你喜欢

转载自blog.csdn.net/miwanmeng/article/details/83303197