PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Jenis postgres {jenis bidang} hanya shell

Singkatnya, Anda perlu menginstal ulang postgis, mungkin cukup drop extension postgis; dan create extension postgis; .

Penjelasan lebih panjang

Anda mungkin melewatkan jenis ini saja, tetapi saya ragu hanya itu, jika Anda ingin mencoba, ini dari 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.';

Untuk shell apa, Anda dapat membaca lebih lanjut tentang mereka di dokumentasi .

Singkatnya :Beberapa tipe memerlukan fungsi yang pada gilirannya mengharuskan tipe with tersebut dideklarasikan, jadi keduanya tidak dapat dibuat - biasanya.

Untuk mengatasi masalah itu, Postgres akan membuat tipe shell yang cukup banyak sebagai pengganti hanya untuk memenuhi validasi.

Dalam kasus Anda geometry adalah tipe shell dan tidak dideklarasikan dengan benar, artinya postgis tidak diinstal dengan benar.

Jenis cangkang terlihat seperti ini:

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;

Dan fungsi yang membutuhkan tipe shell dapat berupa:

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

Jika Anda melihat kembali geometry yang tepat definisi Anda akan melihat bahwa fungsi ini adalah bagian darinya, tetapi tidak dalam shell ini.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Paksa Liquibase untuk memetakan Blob ke BYTEA di PostgreSQL

  2. Cara Mengaktifkan Log Kueri Lambat di PostgreSQL

  3. Apakah mungkin untuk Menghitung dengan kondisi yang berbeda dalam satu permintaan?

  4. Bagaimana cara menulis DataFrame ke tabel postgres?

  5. Di mana kondisi untuk tabel yang digabungkan di Sequelize ORM