PostgreSQL earthdistance Установка Mac
Установка earthdistance module
в Postgresql 9.6.5
на OSX El Capitan 10.11.6
, PG уже установлен, работает. Я создал extension
, который устанавливает cube
первый:
rich=# CREATE EXTENSION earthdistance CASCADE;
NOTICE: installing required extension "cube"
CREATE EXTENSION
Перезапустил мою коробку. Открыл psql
, выбрал правильную базу данных, спросил о функциях (\df
):
rich=# \df
List of functions
Schema | Name | Result data type | Argument data types | Type
--------+--------------------+------------------+------------------------------------------+--------
public | cube | cube | cube, double precision | normal
public | cube | cube | cube, double precision, double precision | normal
public | cube | cube | double precision | normal
public | cube | cube | double precision, double precision | normal
public | cube | cube | double precision[] | normal
public | cube | cube | double precision[], double precision[] | normal
public | cube_cmp | integer | cube, cube | normal
public | cube_contained | boolean | cube, cube | normal
public | cube_contains | boolean | cube, cube | normal
public | cube_coord | double precision | cube, integer | normal
public | cube_coord_llur | double precision | cube, integer | normal
public | cube_dim | integer | cube | normal
public | cube_distance | double precision | cube, cube | normal
public | cube_enlarge | cube | cube, double precision, integer | normal
public | cube_eq | boolean | cube, cube | normal
public | cube_ge | boolean | cube, cube | normal
public | cube_gt | boolean | cube, cube | normal
public | cube_in | cube | cstring | normal
public | cube_inter | cube | cube, cube | normal
public | cube_is_point | boolean | cube | normal
public | cube_le | boolean | cube, cube | normal
public | cube_ll_coord | double precision | cube, integer | normal
public | cube_lt | boolean | cube, cube | normal
public | cube_ne | boolean | cube, cube | normal
public | cube_out | cstring | cube | normal
public | cube_overlap | boolean | cube, cube | normal
public | cube_size | double precision | cube | normal
public | cube_subset | cube | cube, integer[] | normal
public | cube_union | cube | cube, cube | normal
public | cube_ur_coord | double precision | cube, integer | normal
public | distance_chebyshev | double precision | cube, cube | normal
public | distance_taxicab | double precision | cube, cube | normal
public | earth | double precision | | normal
public | earth_box | cube | earth, double precision | normal
public | earth_distance | double precision | earth, earth | normal
public | g_cube_compress | internal | internal | normal
public | g_cube_consistent | boolean | internal, cube, smallint, oid, internal | normal
public | g_cube_decompress | internal | internal | normal
public | g_cube_distance | double precision | internal, cube, smallint, oid, internal | normal
public | g_cube_penalty | internal | internal, internal, internal | normal
public | g_cube_picksplit | internal | internal, internal | normal
public | g_cube_same | internal | cube, cube, internal | normal
public | g_cube_union | cube | internal, internal | normal
public | gc_to_sec | double precision | double precision | normal
public | geo_distance | double precision | point, point | normal
public | latitude | double precision | earth | normal
public | ll_to_earth | earth | double precision, double precision | normal
public | longitude | double precision | earth | normal
public | sec_to_gc | double precision | double precision | normal
(49 rows)
Так что кажется extension
загружается нормально. В качестве теста я использую следующую простую команду:
SELECT point(43.664828,-79.341620) <@> point(44.418390, -80.096013)
В psql
Я не получаю никакой обратной связи. В Postico 1.3.2
(клиент PG), я получаю следующую ошибку:
ERROR: operator does not exist: point <@> point
LINE 1: SELECT point(43.664828,-79.341620) <@> point(44.418390, -80....
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
Кажется, модуль не установлен, согласно обратной связи. Я ожидаю, что это сработает, так как extension
установлен правильно, и я использую правильный синтаксис для earth_distance
function
, Я пробовал другие запросы с тем же типом ошибки, указывающей на непризнание операторов.
Что я делаю неправильно?
1 ответ
Решаемые. Оказывается, вы должны выбрать database
для extension
применить к этому конкретному database
, Просто входя psql
находится на уровне приложения, поэтому CREATE EXTENSION earthdistance CASCADE
все еще слеп к любой базе данных, по-видимому. Так введите psql
с использованием psql <dbname>
синтаксис, а затем применить CREATE EXTENSION earthdistance CASCADE
для того, чтобы применить к выбранной вами базе данных.