提示:
最好解决方案,使用最新版Navicat 11版本,附上下载地址
http://dblt.xiazaiba.com/Soft/N/Navicat_Premium_11.0.10_XiaZaiBa.exe
使用Navicat获取某表的表结构设计信息时,报错:ERROR: column “spclocation” does not exist
一:环境
Postgresql 服务器OS:linux (Red Hat Enterprise Linux AS release 4 (Nahant Update 6))
PostgreSQL 服务器版本:9.2.2
Navicat premium 客户端版本:9.1.9中文版,安装在Windows xp下
二:发现问题
在Windows xp中,用Navicat premium访问PostgreSQL数据库test_zqs中的h_fk_info表的设计信息,报错:
ERROR: column “spclocation” does not exist
LINE 1: …oid,spcname,pg_get_userbyid(spcowner) AS owner,spclocatio…
同样的报错信息也会出现在用Navicat客户端创建表(非sql语句建表)时。
详细见下图1
图1
三:分析问题
初始看到这个问题,感觉很惊讶,心想在表h_fk_info中没有spclocation字段是不错,但你报这样一个错误,不是怀疑俺的智商吗?
在网上搜索此问题的解决方案,没有搜到,无奈只好自己分析问题。
很显然,这个报错跟用户表h_fk_info中有无“spclocation”字段是没有关系的,既然如此,那么一定是在显示h_fk_info表设计时发生了某个查询报出的。而这个查询要查询的某张表中一定不含此字段,但是查询结果却要显示“spclocation”字段的值,所以抛出了异常。
鉴于以上,可以知道Navicat Premiun在显示用户表h_fk_info的表设计时,要查询的这张表一定是系统表,只不过在PostgreSQL数据库版本为9.2.2中,该系统表不含有“spclocation”字段。但是幸运的是,之前用同一Navicat Premium客户端查看PostgreSQL数据库(版本为8.2.14)某用户表的设计时,却没有报错。这足以说明一个事实,那就是同一版本Navicat Premium客户端显示不同版本的PostgreSQL表设计的过程中,发生sql查询应是相同的,并且在PostgreSQL 8.2.14版本数据库中存在一张系统表,该系统表中含有“spclocation”字段。
接下来,就是通过8.2.14版本的PostgreSQL数据库找出这张系统表,字段“spclocation”没有对应的中文意思,但根据经验此字段英文名称命名应是组合命名,正好该字段英文名称的包含“location”,而其代表的含义是“位置”、“地点”,这让人很容易想到表空间,通过psql客户端查询(dS)出来所有系统表,再在其中找出存储表空间信息的pg_tablespace表。
对8.2.14版本系统表pg_tablespace字段的查看,见图2:
可以看出来,在8.2.14版本的数据库中系统表pg_tablespace中含有“spclocation”字段,下面再来对比下9.2.2版本的数据库系统表pg_tablespace,见图3
在图3中,pg_tablespace果真不包含“spclocation”字段。
下面,就8.2.14版本、9.2.2版本系统表pg_tablespace的属性含义给出说明,见表1
四:解决问题
通过以上分析,要解决此问题,理论上只需为9.2.2版本的系统表pg_tablespace增加一列spclocation即可(但不建议这么做,可能会引起其他不可预知问题),但事实上,这样做时,报错了,见下文:
test_zqs=# alter table pg_tablespace add column spclocation text;
ERROR: permission denied: “pg_tablespace” is a system catalog
修改系统表是行不通的,换种思路&Navicat Premium 10.1.3激活#xff0c;可以用最新版本的Navicat Premium,其中Navicat Premium 10.1.7已解决此问题,低于10.1.7版本的未知。
今天的文章
Navicat Premium 10.1.3激活(设计表时 error: column"spclocation" does not exist)分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/106381.html