我想在我的Postgres 9.1安装plpython但它崩溃的服务器:
postgres@dataserver1:~> /opt/postgres/9.1/bin/psql -d mydb
psql.bin (9.1.4)
Type "help" for help.
mydb=# create language 'plpythonu';
The connection to the server was lost. Attempting reset: Failed.
我已经蟒蛇2.6.8安装和处理程序在系统correcty声明:
select tmplname, tmplhandler, tmpllibrary from pg_pltemplate where tmplname like 'plpython%'
"plpythonu" | "plpython_call_handler" | "$libdir/plpython2"
"plpython2u" | "plpython2_call_handler" | "$libdir/plpython2"
而处理程序安装在$ LIBDIR:
postgres@dataserver1:~> ll /opt/postgres/9.1/lib/postgresql/plpython*
-rwxr-xr-x 1 root root 6686333 Aug 17 14:27 /opt/postgres/9.1/lib/postgresql/plpython2.so
在此任何线索将apreciated
编辑
我试图创建扩展plpythonu,plpython2u和plpython3u和他们都崩溃的服务器。
读一点在文档中我发现\ DX命令列出已安装的扩展:
mydb=# \dx
List of installed extensions
Name | Version | Schema | Description
---------+---------+------------+------------------------------
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(1 row)
所以我想只安装扩展PLPGSQL。
mydb=# select name, installed_version from pg_available_extensions where name like '%python%';
name | installed_version
------------+-------------------
plpython2u |
plpython3u |
plpythonu |
(3 rows)
和我的扩展目录:
postgres@dataserver1:/opt/postgres/9.1/share/postgresql/extension> ll *python*
-rw-r--r-- 1 root root 351 Aug 20 17:32 plpython2u--1.0.sql
-rw-r--r-- 1 root root 196 Aug 20 17:32 plpython2u.control
-rw-r--r-- 1 root root 402 Aug 20 17:32 plpython2u--unpackaged--1.0.sql
-rw-r--r-- 1 root root 351 Jun 1 02:54 plpython3u--1.0.sql
-rw-r--r-- 1 root root 196 Jun 1 02:54 plpython3u.control
-rw-r--r-- 1 root root 402 Jun 1 02:54 plpython3u--unpackaged--1.0.sql
-rw-r--r-- 1 root root 347 Aug 20 17:32 plpythonu--1.0.sql
-rw-r--r-- 1 root root 194 Aug 20 17:32 plpythonu.control
-rw-r--r-- 1 root root 393 Aug 20 17:32 plpythonu--unpackaged--1.0.sql
编辑
我在Linux上运行的SuSE,却得到了你的观点。
在我的Postgres的安装目录中,PL-郎库在... /的Postgres / 9.1 / lib中/ Postgres的。 它里面有plpython2.so和plpython3.so
检查这些文件的动态链接库:
alfonso@dataserver1:/opt/postgres/9.1/lib/postgresql> sudo ldd plpython2.so
linux-vdso.so.1 => (0x00007fff5e945000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f64064df000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f64062da000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007f64060d7000)
libm.so.6 => /lib64/libm.so.6 (0x00007f6405e5e000)
libc.so.6 => /lib64/libc.so.6 (0x00007f6405ae9000)
/lib64/ld-linux-x86-64.so.2 (0x00007f6406b2e000)
有任何Python库没有提及,既不plpython3.so
但我已经安装了Python 2.6和3.2蟒。 请注意,我要安装的扩展蟒蛇2。
是的,创建扩展仍然会崩溃:
mydb=# create extension plpython2u;
The connection to the server was lost. Attempting reset: Failed.
!> \q
注:对于PostgreSQL 9.1,大多数程序设计语言都被拍成了“扩展”,因此应与创建扩展不能创造语言安装。 CREATE LANGUAGE直接使用现在应该仅限于扩展安装脚本。 如果你在你的数据库中的“裸”的语言,也许是作为升级的结果,你可以将其转换为使用创建扩展langname声明FROM未包装的延伸。
要在特定数据库里安装PL / Python的:
从shell命令行使用createlang plpythonu DBNAME
警告
createlang是一个废弃了,在将来的PostgreSQL版本中删除。 相反我们推荐的创建扩展命令的直接使用。
http://www.postgresql.org/docs/9.1/static/plpython.html
编辑
一步步
下载PostgreSQL的-9.1.5-1-windows.exe后并安装。
首先,让我们看看有什么已经存在。
mydb=# SELECT * FROM pg_available_extensions
mydb-# WHERE name LIKE '%python%' ORDER BY name;
name | default_version | installed_version | comment
------------+-----------------+-------------------+-------------------------------------------
plpython2u | 1.0 | | PL/Python2U untrusted procedural language
plpython3u | 1.0 | | PL/Python3U untrusted procedural language
plpythonu | 1.0 | | PL/PythonU untrusted procedural language
(3 Zeilen)
没有安装!
纵观lib文件夹中,并且只有。
.... \ PostgreSQL的\ 9.1 \ LIB \ plpython3.dll。
所以,我必须尝试安装plpython3u。
mydb=# CREATE EXTENSION plpython3u;
ERROR: unknown error »$libdir/plpython3.dll«
一定有什么毛病plpython3.dll。
展望plpython3.dll有到python32.dll参考。
......
Export Table:
Name: plpython3.dll
Time Date Stamp: 0x502B366A (15.08.2012 06:40:58)
Version: 0.00
Ordinal Base: 1
Number of Functions: 9
Number of Names: 9
Ordinal Entry Point Name
1 0x00001005 Pg_magic_func
2 0x00001019 PyInit_plpy
3 0x0000101E _PG_init
4 0x00001023 pg_finfo_plpython3_call_handler
5 0x0000100F pg_finfo_plpython3_inline_handler
6 0x0000100A pg_finfo_plpython3_validator
7 0x00001028 plpython3_call_handler
8 0x00001014 plpython3_inline_handler
9 0x0000102D plpython3_validator
Import Table:
libintl-8.dll
Import Adress Table: 0x00016628
Import Name Table: 0x0001617C
Time Date Stamp: 0x00000000
Index of first forwarder reference: 0x00000000
0x000169E4 28 libintl_dngettext
0x000169D0 27 libintl_dgettext
**python32.dll**
Import Adress Table: 0x0001686C
Import Name Table: 0x000163C0
Time Date Stamp: 0x00000000
Index of first forwarder reference: 0x00000000
....
- 我下载并安装python-3.2.3.msi。 我发现只有python3.dll
- 复制python3.dll到.... \的PostgreSQL \ 9.1 \ lib和重命名为python32.dll
早在SQL壳牌我输入
mydb=# CREATE EXTENSION plpython3u FROM unpackaged;
我得到的消息
CREATE EXTENSION
寻找的结果有:
mydb=# SELECT * FROM pg_available_extensions
mydb-# WHERE name LIKE '%python%' ORDER BY name;
在那里,它是 plpython3u的安装的版本1.0
我也可以看到它的pgAdmin III
希望帮助!
编辑:
手动试试吧
第1步
MYDB =#CREATE PROCEDURAL LANGUAGE plpython2u;
第2步
MYDB =#COMMENT ON PROCEDURAL LANGUAGE plpython2u IS 'PL / Python2U不可信过程语言';
第3步
MYDB =#创建扩展plpython2u FROM未封装;
与Python 2.6.5进行测试
Postgres的9.0与Python 2.7安装在WIN 8.1 64位。 FYI:这是我如何设法解决的错误:无法加载库 “C:/ Program Files文件/ PostgreSQL的/ 9.0 / lib目录/ plpython.dll” 运行CREATE LANGUAGE plpythonu时; 在pgAdmin的
- \ Program Files文件\的PostgreSQL \ 9.0 \ lib中应包含文件 “plppython.dll”:从EnterpriseDB的安装PostgreSQL 9.0路径C后
- 检查与程序等的Dependency Walker该文件表明,它缺少一个python26.dll
- 如果你在你看看C:\ WINDOWS \ SYSTEM32目录下,你应该找到一个文件python27.dll
- 创建python27.dll副本 - > python26.dll
- 请确保你C:\ WINDOWS \ SYSTEM32在PATH变量
- 运行CREATE LANGUAGE plpythonu; IM的pgAdmin