PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Postgres тип {field type} е само обвивка

Накратко, трябва да преинсталирате postgis, вероятно просто drop extension postgis; и create extension postgis; .

По-дълго обяснение

Възможно е да пропускате само този тип, но се съмнявам, че е точно това, но ако искате да опитате, ето от 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.';

Що се отнася до кои черупки, можете да прочетете повече за тях в документация .

Накратко :Някои типове изискват функции, които от своя страна изискват този тип да бъде деклариран, така че не могат да бъдат създадени - нормално.

За да заобиколи този проблем, Postgres ще създаде типове обвивки, които до голяма степен са запазени места, само за да удовлетворят проверката.

Във вашия случай geometry е тип shell и не е правилно деклариран, което означава, че postgis не е инсталиран правилно.

Типът на обвивката изглежда така:

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;

И функция, изискваща тип обвивка, може да бъде:

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

Ако погледнете назад към правилната geometry ще забележите, че тази функция е част от нея, но не и в тази обвивка.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rails + Postgres:Не връща информация за часовата зона в колона от обединена таблица

  2. Може ли plv8 езиковото разширение на JavaScript да извиква библиотеки на трети страни?

  3. CSV данни в postgreSQL с помощта на Python

  4. TypeError:не може да излезе от psycopg2.extensions.Binary to binary

  5. Не може да стартира PostgreSQL