当我使用 pg_upgrade 检查将 postgresql 9.0 beta2 升级到 postgresql 9.3 beta1。错误发生在下面:
uptest@db-172-16-3-33-> cat loadable_libraries.txt
Could not load library "$libdir/postgis-2.0"
ERROR: could not load library "/opt/pgsql9.3beta1/lib/postgis-2.0.so": /opt/pgsql9.3beta1/lib/postgis-2.0.so: undefined symbol: GETSTRUCT
详细程序:
- 安装 9.3
- 初始化数据库 9.3
- 这样安装(pgfincore,pg_stat_statements,postgis,不要安装模式 sql)
- 查看
我LD_LIBRARY_PATH
的是:
LD_LIBRARY_PATH=/opt/pgsql9.3beta1/lib:/opt/postgis-2.0.3-for9.3/lib:/opt/gdal-1.10.0/lib:/opt/geos-3.3.8/lib:/opt/json-c-git20130520/lib:/opt/proj-4.8.0/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib /opt/pgsql9.3beta1/bin/pg_upgrade -c -b /opt/pgsql9.0beta2/bin -B /opt/pgsql9.3beta1/bin -d /pgdata1099 -D /pgdata2099 -p 1099 -P 2099 -u postgres -v
然后是错误:
Checking for presence of required libraries fatal
Your installation references loadable libraries that are missing from the
new installation. You can add these libraries to the new installation,
or remove the functions using them from the old installation. A list of
problem libraries is in the file:
loadable_libraries.txt
Failure, exiting
解决:
这是 postgresql 9.3 的 postgis 错误。并解决了它。
谢谢。
http://trac.osgeo.org/postgis/changeset/10321
vi /opt/soft_bak/postgis-2.0.3/postgis/geometry_estimate.c
//add
#if POSTGIS_PGSQL_VERSION >= 93
#include "access/htup_details.h"
#endif
然后gmake
,gmake install
pg_upgrade 现在是否通过了。