2013-08-20 12 views
6

Użyłem homebrew do aktualizacji najnowszej wersji Postgis. (2,1)Włączanie Geokodera Tiger w wersji Postgis 2.1

brew unlink postgis 
brew install postgis 

Potem stworzyliśmy migrację zmienić rozszerzenie PostGIS do 2,1

rails g migration alter_postgis_version 

def change 
    execute %q{ALTER EXTENSION postgis UPDATE TO "2.1.0";} 
end 

Edit:

Ran polecenia piwny w pierwszym komentarzu i teraz otrzymuję następujący błąd podczas migracji:

PG::UndefinedObject: ERROR: type "geometry" does not exist: 
CREATE EXTENSION postgis_tiger_geocoder;/me/.rvm/gems/ruby-2.0.0- 
[email protected]_alert/gems/activerecord4.0.0/ 
lib/active_record/connection_adapters/postgresql/database_statements.rb:128:in `exec' 

Mam postgis ustawiony pod schematem postgis, więc jeśli mam uruchomić

$: set search_path = "$user", postgis,public; 
$: \d 
          List of relations 
Schema |   Name   | Type |  Owner  
---------+--------------------------+----------+------------------- 
postgis | geography_columns  | view  | me 
postgis | geometry_columns   | view  | me 
etc.. 

$: \d geometry_columns 

       View "postgis.geometry_columns" 
     Column  |   Type   | Modifiers 
-------------------+------------------------+----------- 
f_table_catalog | character varying(256) | 
f_table_schema | character varying(256) | 
f_table_name  | character varying(256) | 
f_geometry_column | character varying(256) | 
coord_dimension | integer    | 
srid    | integer    | 
type    | character varying(30) | 

Jednakże jeśli próbuję uruchomić:

$: CREATE EXTENSION postgis_tiger_geocoder; 
ERROR: type "geometry" does not exist 

To nie ma żadnego sensu dla mnie, ponieważ geometry_columns znajduje się na liście stosunków.

Odpowiedz

1

Pobiegł do tego. Wyszedłem po tym, jak ponownie zainstalowałem geos, gdal i libspatialite (również i relinking). Nie mogę powiedzieć, że to jest recepta na kopiowanie/wklejanie, ale bawić się z nim i sprawdzić, czy można zmusić go do pracy:

brew reinstall gdal 
brew unlink gdal && brew link gdal 
brew reinstall geos 
brew unlink geos && brew link geos 
brew reinstall libspatialite 
brew unlink libspatialite && brew link libspatialite 

Można to zrobić w innej kolejności, lub przerobić jeden po drugi w sposób, który uporządkuje biblioteki. Nie należy deinstalować Postgis-2.0.x, ponieważ będziesz potrzebować (obu) bibliotek do miękkiego uaktualnienia.

+1

Hmm, który wydaje się zrobić większość praca, ale teraz mój skrypt nie działa przy tworzeniu geocoder postgis tygrysa. Zmieniłem powyższy komunikat o błędzie. – tomciopp

+0

Rozwiązałem twój pierwotny problem, proszę nagradzaj odpowiednie punkty. – Ken

+0

Chciałem podzielić nagrodę między was, ale SO nie pozwala na to. Chciałem rozpocząć kolejną nagrodę, ale tylko SO pozwala na zwiększenie nagrody, ponieważ moja była 250, to 500. Otrzymasz uprowadzenie i akceptację. Dzięki za pomoc. – tomciopp

2

Upewnij się, że schemat postgis znajduje się w Twojej bazie danych search_path. Następnie ponownie połącz się z bazą danych i spróbuj ponownie. Powinien wyglądać mniej więcej tak.

ALTER DATABASE mydb SET search_path = public, postgis; 

Jest mały błąd wprowadziliśmy w postgis_tiger_geocoder więc chcieć użyć on 2.1.1 jednego lub ręcznie załatać ładowarka opisane tutaj:

http://www.postgresonline.com/journal/archives/317-CREATE-SCHEMA-IF-NOT-EXISTS-in-9.3-and-tiger-geocoder.html