PostGIS не работает с psql?

У меня есть sql-скрипт, который создает несколько таблиц, триггер и функцию триггера. Все команды работают в pgAdmin, когда я выполняю их в разделе «Запрос». Моя цель - поместить все эти команды в сценарий, чтобы можно было относительно легко и быстро настроить базу данных на любой машине. Однако, когда я пытаюсь запустить сценарий через psql, я получаю следующие ошибки во всех строках, где я пытаюсь использовать типы Geography:

ERROR:  type "geography" does not exist

Это не имеет смысла, потому что я могу копировать и вставлять точно такие же запросы в редактор запросов pgAdmin, и он отлично работает. Psql не поддерживает PostGIS? Или, может быть, это не самая последняя версия PostGIS, 1.5.3, которая включает новые Geography типы? Что я могу сделать, чтобы это исправить?

ИЗМЕНИТЬ

Пример одного из моих запросов:

CREATE TABLE source_imagery (
    id SERIAL PRIMARY KEY,
    image_type VARCHAR(1000),
    image_path VARCHAR(1000),
    boundary GEOGRAPHY(POLYGON, 4326),
    image_time TIMESTAMP,
    catalog_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Сообщение об ошибке:

ERROR:  type "geography" does not exist
LINE 5:     boundary GEOGRAPHY(POLYGON, 4326),
                     ^

person Steph    schedule 12.08.2011    source источник


Ответы (1)


Вы можете попробовать использовать тот же psql, что и pgAdmin, указав прямо на него. В Mac OS X он находится в pgAdmin3.app/Contents/SharedSupport/psql. Однако действительно важна версия сервера (а не версия клиента). Вы должны убедиться, что в обоих случаях подключаетесь к одной и той же базе данных.

person aliasmrchips    schedule 12.08.2011
comment
Ах, вы были правы. Моя проблема заключалась в том, что мой сценарий создавал базу данных, а затем пытался создать таблицы. Пришлось разделить сценарий на две части. Первый сценарий подключается к psql через базу данных postgres, а второй сценарий подключается к psql через вновь созданную базу данных. Это решило мою проблему. Спасибо за вашу помощь! - person Steph; 13.08.2011