0

我想在 postgresql 14 中描述一个表模式。但是,当我使用 old 时\d+,会抛出错误:

pgsql=# \d+ <table_name>
ERROR:  column c.relhasoids does not exist
LINE 1: ...riggers, c.relrowsecurity, c.relforcerowsecurity, c.relhasoi...

提前致谢!

4

3 回答 3

2

如果您使用旧psql版本连接到较新的服务器版本,某些命令可能会失败,因为psql在建立连接时会通知您。这正是您在那里工作时看到的。

psql从您的 v14 安装中调用,一切都会正常工作。如果您不知道如何操作,请卸载所有旧版本的 PostgreSQL。

于 2022-02-01T04:53:19.387 回答
1

与之前的两个答案一样,您的主机中有两个版本的psql,默认是较旧的版本,与当前数据库版本 14 不兼容。

临时修复

  • 验证当前版本和位置
bash-4.2$ psql --version
psql (PostgreSQL) 9.2.24
bash-4.2$ which psql
/usr/bin/psql
  • 查找当前数据库的 psql 版本的位置。通常,它在 /usr/psql??/bin 下,例如:
bash-4.2$ cd /usr/pgsql-13/bin
bash-4.2$ ls -ltr|grep psql
-rwxr-xr-x 1 root root  644264 May 13  2021 psql
  • 通过提供路径导航到该位置或调用该 psql 二进制文件,例如
bash-4.2$ /usr/pgsql-13/bin/psql --version
psql (PostgreSQL) 13.3

bash-4.2$ /usr/pgsql-13/bin/psql
Pager usage is off.
psql (13.3)
Type "help" for help.

postgres=#

永久修复

如果您希望作为新版本的现有数据库的psql为默认值,您可以使用“update-alternatives”实用程序。就像这里提到的: 如何纠正 psql 版本和 postgresql 版本的不匹配?

我就是这样做的。

    
    [root@ip-10-211-209-252 bin]# pwd
/usr/bin
    [root@ip-xxxx bin]# mv psql psql9
    [root@ip-xxxx bin]# update-alternatives --install /usr/bin/psql psql /usr/bin/psql9  1
    
    [root@ip-xxxx bin]# cd /usr/pgsql-13/bin
    [root@ip-xxxx bin]# ls -ltr|grep psql
    -rwxr-xr-x 1 root root  644264 May 13  2021 psql
    [root@ip-xxxx bin]# update-alternatives --install /usr/bin/psql psql /usr/pgsql-13/bin/psql 2
    [root@ip-xxxx bin]# update-alternatives --config psql
    
    There are 3 programs which provide 'psql'.
    
      Selection    Command
    -----------------------------------------------
    *+ 1           /usr/pgsql-13/bin/psql
       2           /usr/bin/psql
       3           /usr/bin/psql9
    
    Enter to keep the current selection[+], or type selection number: 1
    [root@ip-xxxx bin]#

于 2022-02-01T06:37:39.313 回答
1

\d+在 Postgres14 上工作得很好。也许您使用的是旧版本的psql. 没有前向兼容性。如果你想使用 PostgreSQL14,你应该使用psqlPostgres14 及更高版本。您可以通过以下方式检查--option

[pavel.stehule@pgsql ~]$ psql --version
psql (PostgreSQL) 9.6.23
于 2022-02-01T04:53:30.553 回答