问题在于由于还原操作,你现在有了名为“ST_AsGeoJSON”的模糊函数。您可以运行以下查询进行检查:
select * from pg_proc where proname = 'st_asgeojson'
在干净的安装中,该操作应返回五行。但是很可能会返回更多...
解决方法是运行“postgis_upgrade_20_minor.sql”文件。这个文件包含了一系列SQL命令,可以清理异常的st_asGeoJSON函数等问题。在Windows系统中,它位于您的postgresql安装下的“share/contrib/postgis-[version]”目录中。在我的案例中,完整路径为“C:\Program Files\PostgreSQL\9.3\share\contrib\postgis-2.1\postgis_upgrade_21_minor.sql” - 您的路径可能因您的操作系统和正在使用的Postgresql和Postgis版本而异。
如果您正在使用PGAdmin,则可以连接到您的数据库并打开一个SQL窗口。打开该SQL文件,您可以运行整个文件,或滚动到底部,选择以“DROP FUNCTION IF EXISTS ST_AsGeoJson”开头的命令并仅运行这些命令。
再次执行“select * from pg_proc where proname = 'st_asgeojson'”,以查看是否产生了改变。
祝你好运!
[编辑] 如果您找不到文件,则以下是从.sql文件中复制函数删除命令。
DROP FUNCTION IF EXISTS ST_AsGeoJson(geometry);
DROP FUNCTION IF EXISTS ST_AsGeoJson(geography);
DROP FUNCTION IF EXISTS ST_AsGeoJson(geometry,int4);
DROP FUNCTION IF EXISTS ST_AsGeoJson(geography,int4);
DROP FUNCTION IF EXISTS ST_AsGeoJson(int4,geometry);
DROP FUNCTION IF EXISTS ST_AsGeoJson(int4,geography);
DROP FUNCTION IF EXISTS ST_AsGeoJson(int4,geometry,int4);
DROP FUNCTION IF EXISTS ST_AsGeoJson(int4,geography,int4);