sql >> Database teknologi >  >> RDS >> PostgreSQL

Postgres type {field type} er kun en skal

Kort sagt, du skal geninstallere postgis, muligvis bare drop extension postgis; og create extension postgis; .

Længere forklaring

Du kan muligvis mangle netop denne type, men jeg tvivler på, at det netop er det, men hvis du vil prøve, er her fra 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.';

Hvad angår hvilke skaller, kan du læse mere om dem i dokumentation .

Kort sagt :Nogle typer kræver funktioner, der igen kræver, at typen med skal erklæres, så ingen af ​​dem kan oprettes - normalt.

For at løse dette problem vil Postgres skabe shell-typer, der stort set er pladsholdere bare for at tilfredsstille validering.

I dit tilfælde geometry er shell-type og blev ikke korrekt deklareret, hvilket betyder, at postgis ikke blev installeret korrekt.

Shell-typen ser sådan ud:

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;

Og funktion, der kræver shell-type, kunne være:

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

Hvis du ser tilbage på korrekt geometry definition vil du bemærke, at denne funktion er en del af den, men ikke i denne skal.




  1. Sådan bruger du MySql og Entity Framework 4.1-koden først

  2. ASP.NET Medlemskab/Rolleudbydere til MySQL?

  3. Eksporter en MySQL-database til SQLite-database

  4. Lagring af Python-syltede objekter i MySQL db