PostgreSQL中关键字作为命名空间的查询方法——解决'in'命名空间查询报错问题
解决PostgreSQL中用保留关键字作为Schema名的查询问题
你猜得一点没错——in确实是PostgreSQL的保留关键字(就是咱们写WHERE id IN (1,2,3)里的那个),直接写in.places的时候,数据库会把in当成SQL语法的一部分解析,自然就报错了。
解决这个问题超简单,只需要用英文双引号把这个和关键字重名的schema名括起来,告诉数据库:“这是个标识符,不是SQL关键字哦”。
正确的查询语句
直接修改成下面这样就能正常查询了:
SELECT city_name FROM "in".places;
额外小提示
- 不光是schema名,要是你的表名、列名碰巧和PostgreSQL的保留关键字重名,都可以用这个双引号包裹的方法解决。
- 注意双引号是英文的,而且用双引号包裹标识符后,PostgreSQL会严格区分大小写(不过你的schema是小写的
in,所以完全没问题)。
内容的提问来源于stack exchange,提问作者Blighty
相关产品推荐
相关产品推荐

