我已經編寫了自己的腳本來生成還原SQL文件,並且執行還原的第一個任務之一是刪除應該存在的所有約束。 (別擔心,我限制我的腳本存在在備份的時間的。)丟棄約束拋出錯誤
這裏是一個通用的代碼片段
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;
腳本運行沒有問題。
我檢查了ALTER TABLE部分下的postgres.org,我的語法是有效的。
兩種安裝的版本? Postgres 9.2引入了「IF EXISTS」。 –
如果我的開發環境運行在9.1.11之前,IF EXISTS必須在9.2之前引入。但我認爲你回答了這個問題。通過生產服務器上的phpPgAdmin查詢版本,它只是8.4,而不是9.1,因爲文檔讓我相信, – dwlamb
是的,我的錯誤 - 它是9.0而不是9.2。 –