postgresql找不到表的坑

第一次用postgresql做个人项目,记录遇到的一个坑。
参考https://www.fujitsu.com/jp/products/software/resources/feature-stories/postgres/article-index/relation-does-not-exist/

使用pgadmin,自己创建user表(默认在public schema),检索时生产的sql文是

SELECT * FROM public."user";

能正常检索。去掉public后,SELECT * FROM user;发现结果不对。
原因是show search_path;输出" u s e r " , p u b l i c ,检索时会按顺序检索这两个 s c h e m a 。 S E T s e a r c h p a t h T O p u b l i c ; 后 s h o w s e a r c h p a t h ;依旧输出 " user", public,检索时会按顺序检索这两个schema。 SET search_path TO public;后show search_path;依旧输出" user",public,检索时会按顺序检索这两个schemaSETsearchpathTOpublic;showsearchpath;依旧输出"user", public。
改到cmd里用psql -U postgres(和pgadmin同一个账号)登录,SELECT * FROM public.“user”;却检索不到数据。

原因:
1,cmd里使用了不同的database,使用\c database_name切换db即可。
2,修改search_path后需重启pgadmin才生效。

把自己建的表的表名改成users后,执行SELECT * FROM users,在"$user" schema里找不到,就能从public找到数据。
不改表名,SET search_path TO public重启pgadmin再检索,大概也可以解决(未尝试)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值