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

d_d*_*_dd 2 psycopg2 python-2.7 jsonb postgresql-9.4

当我运行以下内容时:

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

我明白了

    Error type "jsonb" does not exist`
Run Code Online (Sandbox Code Playgroud)

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服务器?

d_d*_*_dd 5

问题是Postgres版本9.3中有一个配置文件,而psycopg2可能正在读取它.

    :dpkg -l | grep postgresql-9.3  
    rc  postgresql-9.3                    9.3.9-1.pgdg14.04+1 
Run Code Online (Sandbox Code Playgroud)

我清除了与之相关的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',)]