为什么我在psycopg2中收到“错误类型”jsonb“不存在”?

时间:2015-07-23 05:22:47

标签: python-2.7 psycopg2 postgresql-9.4 jsonb

当我运行以下内容时:

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`

在virtualenv上安装了psycopg2,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服务器?

2 个答案:

答案 0 :(得分: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',)]

答案 1 :(得分:1)

我也一样。然后我测试

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

0!两个版本在不同的端口!