Respostas:
Eu tive o mesmo problema, mas foi corrigido executando o seguinte código
CREATE EXTENSION postgis;
Em detalhe,
postgis
. Eu precisava executar o seguinte comando e tudo estava bem novamente:DO $$ BEGIN EXECUTE 'alter database '||current_database()||' set search_path = "$user", public, lookup, postgis'; END; $$ ;
Se a extensão Postgis for carregada, então seu SQL talvez não encontre o tipo de geometria por causa da falta do caminho de pesquisa para o esquema público.
Experimentar
SET search_path = ..., public;
na primeira linha do seu scsript. (substitua ... pelos outros caminhos de pesquisa necessários)
Você pode fazer isso no terminal:
psql mydatabasename -c "CREATE EXTENSION postgis";
Para fazer o psql parar no primeiro erro, use -v ON_ERROR_STOP=1
(que está desativado por padrão , e é por isso que você vê muitos erros). Por exemplo:
psql -U postgres -d postgis -v ON_ERROR_STOP=1 -f postgis.sql
O erro real é algo como "não foi possível carregar a biblioteca X", que pode variar em sua situação. Como uma suposição, tente este comando antes de instalar o script sql:
ldconfig
(pode ser necessário prefixar com, sudo
dependendo do seu sistema). Este comando atualiza os caminhos para todas as bibliotecas do sistema, como GEOS.
Você deve habilitar a extensão em seu banco de dados.
psql my_database -c "CREATE EXTENSION postgis;"
Este erro também pode ocorrer se você tentar usar tipos postgis em outro esquema em vez de public
.
Se você estiver criando seu próprio esquema, usando o postgis 2.3 ou superior e encontrar este erro, faça o seguinte conforme indicado aqui :
CREATE SCHEMA IF NOT EXISTS my_schema;
CREATE extension postgis;
UPDATE pg_extension
SET extrelocatable = TRUE
WHERE extname = 'postgis';
ALTER EXTENSION postgis
SET SCHEMA my_schema;
ALTER EXTENSION postgis
UPDATE TO "2.5.2next";
ALTER EXTENSION postgis
UPDATE TO "2.5.2";
SET search_path TO my_schema;
Em seguida, você pode continuar a usar as funcionalidades pós-gis.
Você também precisa garantir que o usuário com o qual está tentando usar a extensão postgis tenha acesso ao esquema onde o postgis está configurado (que nos tutoriais que li é chamado de 'postgis').
Acabei de ter esse erro, que foi resolvido porque eu só tinha dado acesso ao banco de dados a um novo usuário. No banco de dados que criei, executei:
grant all on schema postgis to USERNAME;
E isso resolveu esse erro
As respostas aqui podem resolver seu problema, no entanto, se você já tem postgis habilitado em seu banco de dados, o problema pode ser que você está tentando restaurar uma tabela postgis (com uma coluna geométrica) em um esquema diferente de onde sua extensão postgis está habilitada. No pgAdmin você pode clicar na extensão postgis e ver qual esquema está especificado. Se você estiver tentando restaurar uma tabela com coluna geométrica em um esquema diferente, poderá obter este erro.
Resolvi isso alterando minha extensão postgis - no entanto, não tenho certeza se essa era necessariamente a melhor maneira de fazer isso. Tudo o que sei é que me permitiu restaurar a mesa.