PostgreSQL执行查询报错‘Relation does not exist’求助
以下是几种可能触发该错误的场景,即便你确认库表实际存在:
标识符大小写敏感问题
部分数据库(如PostgreSQL)对库表名的大小写处理严格。如果创建库/表时用双引号包裹了名称(例如"MyDatabase"."UserTable"),查询时必须同样用双引号包裹,否则数据库会自动将名称转为小写查找,导致匹配失败。默认Schema不匹配
某些数据库中,表属于特定的Schema(比如PostgreSQL默认的public)。如果你的表不在当前连接的默认Schema下,仅写database.table可能无法识别,需要明确指定完整路径database.schema.table,或者先执行SET search_path TO database.target_schema;切换默认Schema后再查询。用户权限不足
当前登录的数据库用户可能没有目标库表的访问权限,甚至无法读取information_schema。可以尝试用超级用户(如postgres)执行相同查询,若成功则说明是权限问题,需给当前用户授予对应权限:GRANT SELECT ON database.table TO your_username;库表名存在拼写/特殊字符问题
仔细核对库表名是否有空格、下划线或其他特殊字符,比如实际表名是database.user_table但你写成了database.usertable,或者表名带空格(如"user table")却未用引号包裹,都会导致找不到关系。连接了错误的数据库实例
你可能误连接到了其他数据库实例(比如本地测试库和线上库、不同端口的实例)。可以先执行SELECT current_database();确认当前连接的数据库是否正确。
内容的提问来源于stack exchange,提问作者userno

