我编写了自己的脚本来生成还原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,我的语法是有效的。
答案 0 :(得分:1)
作为旧版本的解决方法,您可以:
无条件地删除约束并捕获错误;或
检查information_schema
或pg_catalog
是否有约束,只有在您发现它已存在时才将其删除。