美文网首页
postgresql FAQ

postgresql FAQ

作者: 得鹿梦为鱼 | 来源:发表于2018-12-25 23:17 被阅读0次

1.  org.postgresql.util.PSQLException: ERROR: cached plan must not change result type

产生原因

通过java程序,频繁执行DDL操作

解决

在db连接url里,添加参数 prepareThreshold=0,即可解决问题。

eg:

jdbc:postgresql://192.168.1.1:5432/xxx?prepareThreshold=0

具体讲解可参考官方文档:

https://jdbc.postgresql.org/documentation/head/connect.html#connection-parameters

2. pgsql数据大小写敏感

2.1 模糊查询

mysql 可以不区分大小写,但pgsql是对大小写敏感的

pgsql 可以使用 ilike 对数据进行模糊检索,此时,对数据是不区分大小写的

ilike 与 like在性能上是否有区别,目前还没找到相关文档准确说明

官方文档对ilike的解释:

官方文档对ilike的解释

2.2 指定列查询忽略大小写

场景:用户管理->注册用户->输入用户名->用户名校验是否存在

不可能有一个用户叫 Bean,还可以注册一个叫 bean 的用户

但pgsql是区分大小写的,这个时候,就需要使用 lower()函数+序列

官方文档

使用lower+序列可解决查询数据区分大小写问题

从图中也可以知道,创建了一个lower()的序列,同时把数据全部转换为小写后,进行匹配查询的

示例:

创建序列

DROP INDEX IF EXISTS IDX_USER_NAME;

CREATE INDEX IDX_USER_NAME ON USER (LOWER(USER_NAME));

查询

SELECT ID,USER_NAME FROM USER WHERE LOWER(USER_NAME) = LOWER('Bean');

3 使用存储过程来添加字段并赋值(20190422)

使用存储过来添加字段&&赋值

4.pgsql通过sql查询表字段信息

SELECT

TABLE_NAME,

COLUMN_NAME,

dtd_identifier AS COLUMN_ID,

DATA_TYPE,

character_maximum_length AS DATA_LENGTH,

is_nullable AS NULLABLE,

column_default AS DATA_DEFAULT,

NUMERIC_scale AS DATA_SCALE

FROM

information_schema. COLUMNS

WHERE

table_schema = 'public'

AND TABLE_NAME = '****';

在网上坑了好久,找到的好多都是 pg_tables,pg_attrdef,pg_catalog 等等组合起来查询,特别麻烦,还不好用

其实通过 information_schema.columns 就可以获取到这些信息了

5.pgsql [Err] ERROR: syntax error at or near "ORDER"

pgsql 在执行update时,先进行了排序操作,会报这个错

原sql:

update my_user set age = age + 1 ORDER BY age asc;

pgsql错误原因:order by 不允许用在update场景,可用于 SELECT 或 UNION, INTERSECT,EXCEPT 组合的计算结果

修改后的sql:

update my_user set age = age +1 where id in (

select id from my_user order by age desc

);

通过子查询,先排序把需要update的数据id拿到,再通过id来更新数据

一个有趣的设计,mysql与pgsql的反应刚好相反

pgsql 能正常执行的语句,在mysql里会出现这个错误

[Err] 1093 - You can't specify target table 'my_user' for update in FROM clause

mysql错误原因:在更新这个表和数据时又查询了它,而查询的数据又做了更新的条件

在对工程做数据库兼容的时候,得注意这个坑了

相关文章

网友评论

      本文标题:postgresql FAQ

      本文链接:https://www.haomeiwen.com/subject/vyzqlqtx.html