2

9.3archlinuxに postgresql をインストールしました。

postgis 2.0 関数、タイプなどを使用するデータベース バックアップ ( psql <db_hame> < backup.file) を復元しようとしています。 pacman ( ) を使用して postgis をインストールしようとしpacman -S postgisましたが、正常にインストールされましたが、データベース中に関数が見つからないというエラーがたくさんあるため、2.0とバージョンに互換性がないようです2.1輸入:

ERROR:  could not find function "geography_analyze" in file "/usr/lib/postgresql/postgis-2.1.so"
ERROR:  function public.geography_analyze(internal) does not exist
ERROR:  function geography_analyze(internal) does not exist
ERROR:  could not find function "geometry_analyze_2d" in file "/usr/lib/postgresql/postgis-2.1.so"
ERROR:  function public.geometry_analyze(internal) does not exist
ERROR:  function geometry_analyze(internal) does not exist
ERROR:  type "geometry" is only a shell
ERROR:  type "public.geometry_dump" does not exist
ERROR:  type "geometry" is only a shell
ERROR:  type "public.valid_detail" does not exist
ERROR:  SQL function cannot accept shell type geography
ERROR:  function public._st_bestsrid(geography) does not exist
ERROR:  PL/pgSQL functions cannot return type geometry
ERROR:  function public._st_concavehull(geometry) does not exist
ERROR:  type "geometry_dump" does not exist
ERROR:  function public._st_dumppoints(geometry, integer[]) does not exist
ERROR:  SQL function cannot accept shell type geometry
ERROR:  function public._st_within(geometry, geometry) does not exist
ERROR:  could not find function "geography_gist_selectivity" in file "/usr/lib/postgresql/postgis-2.1.so"
ERROR:  function public.geography_gist_join_selectivity(internal, oid, internal, smallint) does not exist
ERROR:  could not find function "geography_gist_selectivity" in file "/usr/lib/postgresql/postgis-2.1.so"
ERROR:  function public.geography_gist_selectivity(internal, oid, internal, integer) does not exist
ERROR:  could not find function "geometry_gist_joinsel_2d" in file "/usr/lib/postgresql/postgis-2.1.so"
ERROR:  function public.geometry_gist_joinsel_2d(internal, oid, internal, smallint) does not exist
ERROR:  could not find function "geometry_gist_sel_2d" in file "/usr/lib/postgresql/postgis-2.1.so"
ERROR:  function public.geometry_gist_sel_2d(internal, oid, internal, integer) does not exist

次に、次のリンクを使用して postgis パッケージをビルドしようとしました: http://boringnerdystuff.wordpress.com/2012/04/14/postgis-2-0-pkgbuild-for-arch-linux/およびhttps://github.com/ philbns/PostGIS-2.0-PKGBUILD/tree/80d8af061fa73e9a09dd6ec5c204bc4b65e38202 . ただし、ビルドは次のエラーで失敗します。

lwgeom_triggers.c: In function ‘cache_bbox’:
lwgeom_triggers.c:78:33: error: dereferencing pointer to incomplete type
  tupdesc = trigdata->tg_relation->rd_att;

makepkgログ全体: http://pastebin.com/GGqECymZ

postgis 2.0 を使用するデータベースをインポートするにはどうすればよいですか?

4

1 に答える 1

5

うーん、それを機能させるのはかなり大変でした。

postgres 9.3 に対して postgis 2.0.0 をビルドできなかったため、postgres 9.1.10 にロールバックして、ソースから postgress と postgis の両方をビルドする必要がありました。

http://boringnerdystuff.wordpress.com/2012/04/14/postgis-2-0-pkgbuild-for-arch-linux/から postgis をビルドする手順を使用しました(パッケージ自体は github にあります: https://github. com/philbns/PostGIS-2.0-PKGBUILD )。

もう 1 つの問題は、postgres パッケージにありました。9.1.4 を試しましたが、エラーでデータベースの初期化に失敗しました。最後に、dbを初期化できる9.1.10を見つけました。postgres 9.1.10 用のパッケージがないため、postgres 9.1.4 用のパッケージを使用しました ( https://projects.archlinux.org/svntogit/packages.git/commit/trunk?h=packages/postgresql&id=5bd2e474704f619449287efc7310acebcaf15ab4から)。pkgver9.1.10 交差指に変更し、すべてがうまくいくことを願っています。そして、それはうまくいきました!postgres をビルドしてから postgis をビルドし、両方をインストールしました。

次を使用して、データベースでpostgis拡張機能を有効にしました。

CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
CREATE EXTENSION fuzzystrmatch;

そして最後に、私のdbバックアップはエラーなしでインポートされました。

于 2013-10-22T08:39:10.887 に答える