Я написал свой собственный скрипт для создания файла SQL восстановления, и одна из первых задач для восстановления - удалить все ограничения, которые должны быть там. (Не волнуйтесь, я ограничиваю свой скрипт на те, которые существуют на момент создания резервной копии.)dropping constraint throws error
Вот общий фрагмент кода
ALTER TABLE ONLY data DROP CONSTRAINT IF EXISTS data_pkey;
Тестирование это на моей собственной среде разработки работает как ожидается. Тем не менее, запустив его на сервере тот же код выдает ошибку:
ERROR: syntax error at or near "EXISTS"
LINE 1: ALTER TABLE ONLY data DROP CONSTRAINT IF EXISTS data_pkey;
Если IF EXISTS
часть удаляется и синтаксис:
ALTER TABLE ONLY data DROP CONSTRAINT data_pkey;
скрипт запускается без проблем.
Я проверил postgres.org в разделе ALTER TABLE и мой синтаксис действителен.
Версии обеих установок? «IF EXISTS» был введен в Postgres 9.2. –
IF EXISTS должен быть введен до 9.2 для моей среды разработки 9.1.11. Но я думаю, вы ответили на вопрос. Запрос версии через phpPgAdmin на производственном сервере, и это всего лишь 8.4, а не 9.1, поскольку документация заставила меня поверить, – dwlamb
Да, моя ошибка - это 9.0, а не 9.2. –