1

我已经在 Windows 10、x64 上安装了 postgresql 9.5。

我在服务器路径上使用 python 3.3.5 创建了扩展 plpython3u,它似乎成功地创建了扩展:

SELECT * FROM pg_available_extensions
WHERE name like '%python%' order by name;


       name        | default_version | installed_version |                  comment

-------------------+-----------------+-------------------+------------------------------------------
-
 hstore_plpython2u | 1.0             |                   | transform between hstore and plpython2u
 hstore_plpython3u | 1.0             |                   | transform between hstore and plpython3u
 hstore_plpythonu  | 1.0             |                   | transform between hstore and plpythonu
 ltree_plpython2u  | 1.0             |                   | transform between ltree and plpython2u
 ltree_plpython3u  | 1.0             |                   | transform between ltree and plpython3u
 ltree_plpythonu   | 1.0             |                   | transform between ltree and plpythonu
 plpython2u        | 1.0             |                   | PL/Python2U untrusted procedural language
 plpython3u        | 1.0             | 1.0               | PL/Python3U untrusted procedural language
 plpythonu         | 1.0             |                   | PL/PythonU untrusted procedural language
(9 rows)

但是,当我尝试创建以下函数时(来自pg docs

CREATE FUNCTION pymax (a integer, b integer)
  RETURNS integer
AS $$
  if a > b:
    return a
  return b
$$ LANGUAGE plpython3u;

psql(或 pgadmin3)终端的连接被重置。

路径上的 python 3.3 是 anaconda 的 distb,它自己运行良好。我在 postgresql 文档中找不到所需的 python 版本,并使用了这里所描述的依赖walker Postgres database crash when installed plpython以查找服务器 lib/ 中的 plpython3.dll 指向的所需 dll。

谁能帮我解决我错过的问题?

非常感谢

4

1 回答 1

0

更仔细地查看安装下载,我阅读了 readme.txt。这清楚地说明了如何包含包括 plpython 在内的语言包。无需使用dependency walker或类似的东西。

遵循 readme.txt 中清晰而简单的说明即可使 plpython 扩展正常工作。没有理由不阅读自述文件。我的错。

我不匹配所需的 python 版本。底线是 postgresql 似乎确实对 python 的特定发行版相对敏感,而不仅仅是版本 - (我匹配了 postgres python distb 3.3.4 和 anaconda 3.3.4 的版本。)

具体来说,设置服务器的路径以使用与服务器一起安装的 python,在我的例子中是 C:\EnterpriseDB\LanguagePack\9.5\x64\Python-3.3,这就是让它正常工作所需的全部内容。

感谢 pgsql-general 邮件列表上的 Adrian Klaver 帮我整理。这个答案仅供将来参考,因为我声称很容易错过自述文件:-)。

于 2016-05-23T21:23:50.540 回答