我在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 installing plpython来查找服务器的lib /指向plpython3.dll所需的dll。 / p>
任何人都可以帮我解决我错过的事情吗?
非常感谢
答案 0 :(得分:0)
仔细查看安装下载,我阅读了readme.txt。这清楚地说明了如何包括语言包,包括plpython。不需要依赖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,就是让它正常工作所需的一切。
感谢Adrian Klaver在pgsql-general邮件列表上让我排序。这个答案仅供将来参考,因为我声称很容易错过自述文件: - )。