【问题标题】:PostgreSQL: Create extension plpythonu query not working on Ubuntu 19.10 and PostgreSQL 10.10PostgreSQL:创建扩展 plpythonu 查询在 Ubuntu 19.10 和 PostgreSQL 10.10 上不起作用
【发布时间】:2020-01-14 08:41:29
【问题描述】:

我在 Ubuntu 19.10 上安装的 PostgreSQL 11.5 中使用 my_db=# CREATE EXTENSION IF NOT EXISTS plpythonu SCHEMA pg_catalog VERSION '1.0'; 查询来创建 plpythonu 扩展。但我遇到了以下错误:

ERROR:  could not open extension control file "/usr/share/postgresql/10/extension/plpythonu.control": No such file or directory

为了安装 plpythonu 包,我使用了sudo apt-get update && apt-get install postgresql-plpython3 命令并成功安装。然后,我检查了/usr/share/postgresql 目录,在我的案例中有 1011 目录。我用谷歌搜索错误,发现PostgreSQL: how to install plpythonu extensionPostgres database crash when installing plpython 帖子并按照答案进行操作,但在我的情况下它们不起作用。此外,我在这里Chapter 43. PL/Python - Python Procedural Language 的文档中阅读了它,但仍然找不到解决错误的解决方案,我无法在数据库中创建 plpythonu 扩展。现在,我想知道我是否应该删除或卸载任何东西,或者我的 PostgreSQL 有什么问题?请指导我创建扩展程序应遵循的步骤。

【问题讨论】:

  • "错误:无法打开扩展控制文件 "/usr/share/postgresql/10" 您似乎没有连接到版本 11 的 PostgreSQL 服务器。
  • "psql" 不是数据库服务器,它是一个客户端程序。 “psql”的版本不需要和它所连接的服务器的版本相匹配。
  • 以下命令显示 PostgreSQL 版本与 psql 版本不同,您的权利。apps_mod=# SELECT version(); version PostgreSQL 10.10 (Ubuntu 10.10-0ubuntu0.18.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0, 64-bit (1 row)。那么对于以上版本的 PostgreSQL,数据库和创建 plpythonu 扩展有什么问题?我应该怎么做才能修复上述错误?

标签: python database postgresql ubuntu ubuntu-19.04


【解决方案1】:

看起来你在 postgresql 10 上安装了错误的 plpython3u 版本。

你可以试试:

操作系统级安装:

  1. 更新本地存储库

    自动更新

  2. 为您的数据库搜索支持的 plpython 版本

    apt-cache search plpython

  3. 检查结果,为 postgres 10 plpython3u 找到正确的包,下面是我基于 debian 的 postgres dockers 容器中的示例列表

postgresql-plpython3-10 - PL/Python 3 程序语言 PostgreSQL 10 postgresql-plpython3-10-dbgsym - 调试符号 postgresql-plpython3-10 postgresql-plpython3-11-dbgsym - 调试 postgresql-plpython3-11 的符号 postgresql-plpython3-12 - 用于 PostgreSQL 12 的 PL/Python 3 过程语言 postgresql-plpython3-12-dbgsym - 调试符号 postgresql-plpython3-12 postgresql-plpython3-13 - PL/Python 3 PostgreSQL 13 的过程语言 postgresql-plpython3-13-dbgsym

  • postgresql-plpython3-13 的调试符号
  1. 安装正确的包pg10 + plpython3u而不是调试版本

    apt install postgresql-plpython3-10

Postgresql 级别安装和配置

1.连接到您的 postgresql 10 数据库并通过

创建扩展

=# 创建扩展 plpython3u; 创建扩展

  1. 检查准备情况

=#\dx 已安装扩展列表 姓名 |版本 |架构 |描述 ------------+----------+------------+-------------- ----------------------------------------- plpgsql | 1.0 | pg_catalog | PL/pgSQL 过程语言 plpython3u | 1.0 | pg_catalog | PL/Python3U 不受信任的程序 语言(2 行)

  1. 运行第一个plpython3u函数pymax:

    <DB name>=# CREATE FUNCTION pymax (a integer, b integer)
     RETURNS integer
     AS $$
     if a > b:
         return a
     return b
    

    $$ 语言 plpythonu;

如果一切正常,你就有了第一个 plpython3u 函数。享受吧。

注意:您可能需要先通过 apt install python3 安装 python3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-23
    • 1970-01-01
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    • 1970-01-01
    • 2017-09-26
    相关资源
    最近更新 更多