Recientemente actualicé mi versión de postgres de 9.4 a 10.1. Al mismo tiempo, quería actualizar postgis de la versión 2.1 a la versión 3.
Lo que hice fue volcar mi base de datos y restaurarla en mi nuevo postgres. Pero aquí está el problema al que me enfrento. Dado que muchas funciones hacen referencia a la biblioteca postgis con AS '$libdir/postgis-2.1' , aparece un error que dice que no se puede encontrar $libdir/postgis-2.1.
Por supuesto que no puede, ya que el directorio de bibliotecas de mi nuevo postgres solo contiene postgis-3.so. Pero entonces, ¿cómo decirle a mi función que use esta?
Ya encontré un truco, creando un enlace llamado postgis-2.1.so y apuntando a postgis-3.so. Pero esta es realmente una forma fea de hacerlo, y no quiero tener que crear un nuevo enlace cada vez que actualice postgis.
También traté de volcar funciones, sed y restaurarlo así:
pg_dump -U postgres -Fc -s -f db_schema my_db sed -i -e 's/postgis-2.1/postgis-3/g' db_schema pg_restore -l db_schema | grep FUNCTION > functions pg_restore -U postgres -d my_db -L functions db_schemaPero parece que a pg_restore no le gusta el hecho de que sedé este archivo ya que recibo este error:
pg_restore: [archivador personalizado] no pudo leer desde el archivo de entrada: final del archivo
¿Hay una forma limpia de hacer esta actualización o mi enlace simbólico es la única solución aquí?
¿Has intentado seguir la documentación ?
Parece que te falta habilitar PostGIS .
-- Enable PostGIS (as of 3.0 contains just geometry/geography) CREATE EXTENSION postgis; -- enable raster support (for 3+) CREATE EXTENSION postgis_raster; -- Enable Topology CREATE EXTENSION postgis_topology; -- Enable PostGIS Advanced 3D -- and other geoprocessing algorithms -- sfcgal not available with all distributions CREATE EXTENSION postgis_sfcgal; -- fuzzy matching needed for Tiger CREATE EXTENSION fuzzystrmatch; -- rule based standardizer CREATE EXTENSION address_standardizer; -- example rule data set CREATE EXTENSION address_standardizer_data_us; -- Enable US Tiger Geocoder CREATE EXTENSION postgis_tiger_geocoder;