2

当我运行以下命令时:

import psycopg2
#...
cur.execute("DROP TABLE IF EXISTS Song CASCADE") 
cur.execute("CREATE TABLE Song "
    "(songId INT PRIMARY KEY, "
    "data jsonb, "
    "lastUpdate TIMESTAMP)")
#...

我明白了

    Error type "jsonb" does not exist`

psycopg2 安装在 virtualenv 上,并pip show psycopg2提供Version: 2.6.1

PostgreSQL 版本是 9.4.4。我可以使用psql并手动创建一个jsonb类型为列的表。当我通过 python2 和 psycopg2 运行它时导致错误的原因是什么?

我不确定这是否重要,但我刚刚从 PostgreSQL 9.3 更新到 9.4。我尝试用 pip 重新安装 psycopg2 但没有帮助。我试过几次重启 PostgreSQL 服务器。

编辑:
当我SELECT Version()通过 psycopg2 时,它显示返回 PostgreSQL 版本 9.3。如何让 psycopg2 连接到 Postgres 9.4 服务器?

4

2 回答 2

5

问题是 Postgres 9.3 版留下了一个配置文件,而 psycopg2 可能正在读取它。

    :dpkg -l | grep postgresql-9.3  
    rc  postgresql-9.3                    9.3.9-1.pgdg14.04+1 

我清除了与 相关的所有内容Postgres,删除了所有配置文件,并仅重新安装了 9.4 版。

经过一番摆弄,psycopg2正确找到了服务器并能够连接到它。

[('PostgreSQL 9.4.4 on i686-pc-linux-gnu, compiled by gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 32-bit',)]

于 2015-07-24T04:40:03.327 回答
1

我有同样的。然后我测试

pavlov@pavlov-pc:/etc/apt$ sudo service postgresql status 
9.3/main (port 5432): online
9.4/main (port 5433): online

哦!不同端口的两个版本!

于 2015-10-29T11:32:41.017 回答