我正在尝试在Postgresql中 CREATE TABLE 命令。
创建表后,如果我打入 TABLE 表名,则可以使用。

但是我打了 \ d 表名,下面一直出现错误。
ERROR: column c.relhasoids does not existLINE 1: ...riggers, c.relrowsecurity, c.relforcerowsecurity, c.relhasoi...
我尝试使用 DROP DATABASE 表名重新创建数据库,然后再次重新创建表。但这没有用。

任何建议,将不胜感激!谢谢。

最佳答案

如果我使用的是Postgres v.12和较旧的客户端(v.11或更早版本),则可以重现您的错误:

[root@def /]# psql -h 172.17.0.3
psql (11.5, server 12.0)
WARNING: psql major version 11, server major version 12.
         Some psql features might not work.
Type "help" for help.

postgres=# create table mytable (id int, name text);
CREATE TABLE
postgres=# table mytable;
 id | name
----+------
(0 rows)

postgres=# \d mytable;
ERROR:  column c.relhasoids does not exist
LINE 1: ...riggers, c.relrowsecurity, c.relforcerowsecurity, c.relhasoi...
                                                             ^
postgres=#

这是因为在第12版中,table OIDs are no longer treated as special columns,因此不再需要relhasoids列。请确保您使用的是v。12 psql二进制文件,这样就不会遇到此错误。

您不一定要使用psql,所以这里更通用的答案是确保您使用的是兼容的客户端。

关于postgresql - 如何在Postgres中修复 “ERROR: column c.relhasoids does not exist”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58461178/

10-09 00:57