sql >> Database >  >> RDS >> PostgreSQL

Postgres-type {veldtype} is slechts een shell

Kortom, je moet postgis opnieuw installeren, eventueel gewoon drop extension postgis; en create extension postgis; .

Langere uitleg

Misschien mis je alleen dit type, maar ik betwijfel of het alleen dat is, maar als je het wilt proberen, hier is vanaf 2.3:

CREATE TYPE public.geometry
   (INPUT=geometry_in,
       OUTPUT=geometry_out,
       RECEIVE=geometry_recv,
       SEND=geometry_send,
       TYPMOD_IN=geometry_typmod_in,
       TYPMOD_OUT=geometry_typmod_out,
       ANALYZE=geometry_analyze,
       CATEGORY='U', DEFAULT='',
       INTERNALLENGTH=-1, ALIGNMENT=double, STORAGE=MAIN);
ALTER TYPE public.geometry
  OWNER TO postgres;
COMMENT ON TYPE public.geometry
  IS 'postgis type: Planar spatial data type.';

Wat betreft welke shells, je kunt er meer over lezen in documentatie .

Kortom :Sommige typen hebben functies nodig die op hun beurt vereisen dat het type met moet worden gedeclareerd, dus geen van beide kan worden gemaakt - normaal gesproken.

Om dat probleem op te lossen, maakt Postgres shell-types die zo goed als tijdelijke aanduidingen zijn, alleen maar om aan de validatie te voldoen.

In jouw geval geometry is van het shell-type en is niet correct gedeclareerd, wat betekent dat postgis niet correct is geïnstalleerd.

Shell-type ziet er als volgt uit:

CREATE TYPE public.geometry
   (INPUT=shell_in,
       OUTPUT=shell_out,
       RECEIVE=-,
       SEND=-,
       ANALYZE=-,
       CATEGORY='P',
    PASSEDBYVALUE, DEFAULT='',
       INTERNALLENGTH=4, ALIGNMENT=int4, STORAGE=PLAIN);
ALTER TYPE public.geometry
  OWNER TO postgres;

En een functie die een shell-type vereist, kan zijn:

CREATE OR REPLACE FUNCTION geometry_in(cstring)
    RETURNS geometry
    AS '$libdir/postgis-2.3','LWGEOM_in'
    LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;

Als je terugkijkt op de juiste geometry definitie zult u merken dat deze functie er deel van uitmaakt, maar niet in deze shell.




  1. Android-camera om meerdere foto's te maken

  2. MySQL MONTH() ophalen om voorloopnullen te gebruiken?

  3. Ik voer n nee uit. van processen waarbij n is kan tussen 5 - 50 liggen. Elk proces voert meerdere dml-bewerkingen uit op postgres

  4. Een meer geavanceerd model maken met gebruikers-, thread- en poststatussen