无法查询存储Hive元数据的Postgres 9.2中NOTIFICATION_LOG表问题
解决Postgres中Hive元数据表NOTIFICATION_LOG查询报错问题
直接解决方案
执行查询时用双引号包裹大写表名:
select * from "NOTIFICATION_LOG";
问题原因
PostgreSQL默认会将未加双引号的标识符(表名、列名等)自动转换为小写处理。你的NOTIFICATION_LOG表是用大写名称创建的,当你执行不带双引号的select * from NOTIFICATION_LOG;时,Postgres会将表名转为notification_log去查找,而这个小写名称的表并不存在,因此触发"relation does not exist"错误。
而information_schema.columns中存储的是表名的原始大小写,所以通过该视图能匹配到表的记录。
验证步骤
可以查询Postgres系统表确认表的真实名称:
SELECT tablename FROM pg_tables WHERE schemaname = 'public';
如果结果中显示的是大写的NOTIFICATION_LOG,即可确认必须通过双引号来引用该表。
内容的提问来源于stack exchange,提问作者Aso'K
相关产品推荐
相关产品推荐

