PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Postgres type {field type} chỉ là một shell

Tóm lại, bạn cần cài đặt lại postgis, có thể chỉ cần drop extension postgis;create extension postgis; .

Giải thích dài hơn

Bạn có thể thiếu chỉ loại này, nhưng tôi nghi ngờ nó chỉ là vậy, nếu bạn muốn thử, đây là từ 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.';

Đối với những shell nào, bạn có thể đọc thêm về chúng trong tài liệu .

Tóm lại :Một số kiểu yêu cầu các hàm đến lượt nó yêu cầu kiểu đó phải được khai báo, do đó, cả hai loại đều không thể được tạo - bình thường.

Để giải quyết vấn đề đó, Postgres sẽ tạo các loại trình bao có khá nhiều trình giữ chỗ chỉ để đáp ứng việc xác thực.

Trong trường hợp của bạn geometry là loại shell và không được khai báo đúng cách, có nghĩa là postgis không được cài đặt đúng cách.

Loại vỏ trông như thế này:

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;

Và hàm yêu cầu loại shell có thể là:

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

Nếu bạn nhìn lại geometry thích hợp định nghĩa, bạn sẽ nhận thấy rằng chức năng này là một phần của nó, nhưng không nằm trong trình bao này.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đọc tệp CSV / Excel từ tệp SFTP, thực hiện một số thay đổi trong các tệp đó bằng Pandas và lưu lại

  2. Làm thế nào để hiển thị số hàng trong truy vấn PostgreSQL?

  3. Phát hiện các mục trùng lặp trong CTE đệ quy

  4. Không thể tải lớp trình điều khiển JDBC 'com.postgresql.jdbc.Driver'

  5. Postgres:lọc kết quả bằng ARRAY_AGG và HAVING (thay vì WHERE)