$psqlpsql (9.3.0)Type "help" for help.dchaston=# CREATE OR REPLACE FUNCTION table_update()dchaston-# RETURNS TRIGGER AS $$dchaston$# BEGINdchaston$# NEW.last_edit = Now();dchaston$# RETURN NEW;dchaston$# END;dchaston$# $$language 'plpgsql';ERROR: Could not access file "$libdir/plpgsql": No such file or directory
我检查过以下内容:
语言安装:
dchaston=# select * from pg_language;lanname | laNowner | lanispl | lanpltrusted | lanplcallfoID | laninline | lanvalIDator | lanacl---------+----------+---------+--------------+---------------+-----------+--------------+--------internal | 10 | f | f | 0 | 0 | 2246 | c | 10 | f | f | 0 | 0 | 2247 | sql | 10 | f | t | 0 | 0 | 2248 | plpgsql | 10 | t | t | 12019 | 12020 | 12021 | (4 rows)
lib目录(以及pkglibdir以防万一):
$pg_config --libdir/Applications/Postgres.app/Contents/MacOS/lib$pg_config --pkglibdir/Applications/Postgres.app/Contents/MacOS/lib
存档文件:
$cd /Applications/Postgres.app/Contents/MacOS/lib; ls plpg*plpgsql.so
DLSUFFIX设置正确:
lib/pgxs/src/Makefile.shlib:135: DLSUFFIX = .so
尝试卸载并重新安装,但没有任何区别.有任何想法吗?
您是否在同一个盒子上安装了Postgres的多个实例(多个版本或同一版本的多个实例)?标准Postgres不适合. Debian或Ubuntu有额外的基础设施,可以并行使用多个版本.不过我不知道OS X.在标准的Postgres中,path for $libdir
被编译到程序中.多个版本不相处.
执行pg_config –pkglibdir时,请确保它与您的安装相关联.跑:
which pg_config
小调:
> 9.3.0?建议始终升级到latest point-release,即9.3.2 atm.也许当前的来源可以解决您的问题.
>还要检查您的设置是否使用您认为正在使用的$libdir
SELECT * FROM pg_settings WHERE name ~~* '%lib%'
>永远不要引用语言名称’plpgsql’.它是一个标识符:plpgsql.
>并使用plpgsql assignment operator :=. =未记录但容忍atm.
Since Postgres 9.4 both :=
and =
are documented.
否则你的函数定义很好.这不是问题的根源:
CREATE OR REPLACE FUNCTION table_update() RETURNS TRIGGER AS$func$BEGIN NEW.last_edit := Now(); RETURN NEW;END$func$ LANGUAGE plpgsql;总结
以上是内存溢出为你收集整理的postgresql – 无法访问文件“$libdir / plpgsql”:没有这样的文件或目录全部内容,希望文章能够帮你解决postgresql – 无法访问文件“$libdir / plpgsql”:没有这样的文件或目录所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)