我已经安装了PostgreSQL 9.3.1和PostGIS 2.1.0 (通过https://github.com/PostgresApp/PostgresApp/releases/tag/9.3.1.1-RC1)并在我的笔记本电脑上工作了一段时间,并且一直在用它们开发Ruby (2.0.0) on Rails (4.0.0)。
我成功地运行了典型的操作,例如使用@来确定某个点(postgis.geometry(Point,3785))是否在边界框中。最近,我获取了在dev中成功运行的准确点和查询,并进行了等效的特性测试。这是我开始注意到问题的时候。
然而,开发端的一个点是这样存储的(SRID 3785):
POINT (-13740247.269752283 6126532.67447704)...the测试端看到了这样的结果:
POINT (-8238307.241152702 4970299.628630948)我想发布一个关于这个问题的堆栈溢出问题,所以我想要确切的DB版本。虽然select postgis_full_version();以前工作过(它仍然在我的终端回滚历史记录中),但现在它正在返回ERROR: function postgis_full_version() does not exist。在这一点上,我没有想到检查search_path,而是跟踪了https://stackoverflow.com/a/8459682 --首先我尝试了CREATE EXTENSION postgis;,但得到了ERROR: extension "postgis" already exists --然后我执行了:
psql -d myapp_dev -f /Applications/Postgres93.app/Contents/MacOS/share/postgresql/contrib/postgis-2.1/postgis.sql
psql -d myapp_dev -f /Applications/Postgres93.app/Contents/MacOS/share/postgresql/contrib/postgis-2.1/spatial_ref_sys.sql
psql -d myapp_dev -f /Applications/Postgres93.app/Contents/MacOS/share/postgresql/contrib/postgis-2.1/postgis_comments.sql不幸的是,这些并没有起作用,更糟糕的是,现在当我运行我通常的查询时,我看到的是:
PG::UndefinedFunction: ERROR: operator does not exist: postgis.geometry @ geometry事情怎么会这么糟?我还没有重置我的电脑。到目前为止,我只试着重新启动PostgreSQL。有什么想法吗?感谢您的阅读。
发布于 2013-12-31 02:56:35
在我看来,您已经不止一次地在数据库中安装了PostGIS,可能是通过CREATE EXTENSION安装一次,或者通过加载脚本安装一次,或者从转储中安装。
其暗示是:
PG::UndefinedFunction: ERROR: operator does not exist: postgis.geometry @ geometry提到一个操作数的模式限定符postgis.geometry,而对另一个操作数忽略它。我想说,您在不同的模式中有两个geometry类型的副本,可能是public和postgis。
https://dba.stackexchange.com/questions/55833
复制相似问题