我已经尝试过几次遵循斯奇奇氏病 'postgres教程',除了没有修改一个函数(它使用CREATE OR REPLACE FUNCTION)之外,我正在表中更改字段名,以查看部署后它将如何运行。但结果却是下面的错误。谁能帮我指出正确的方向吗?
$ sqitch verify
Verifying sqtest_db
* appschema .... ok
* contact ...... ok
Undeployed change:
* contact
Verify successful
$ sqitch deploy
Deploying changes to sqtest_db
+ contact .. psql:deploy/contact.sql:10: ERROR: relation "contact" already exists
not ok
"/usr/local/bin/psql" unexpectedly returned exit value 3
Deploy failed这是我在tagged之前和之后的tagged部署查询
在标记DB之前
BEGIN;
CREATE TABLE sq_schema.contact
(
log_date DATE NOT NULL,
emp_name CHARACTER VARYING(100) DEFAULT ''
);
COMMIT;用
sqitch rework contact --requires appschema -n 'Added CONTACT table'标记后
BEGIN;
CREATE TABLE sq_schema.contact
(
log_date DATE NOT NULL,
-- Change field name,
employee_name CHARACTER VARYING(100) DEFAULT ''
);
COMMIT;发布于 2016-01-29 18:52:14
返工的目的是进行幂等更改,如CREATE OR REPLACE FUNCTION。CREATE TABLE语句不是幂等的。如果要向表中添加列,我建议:
CREATE TABLE语句和sqitch rebase,以恢复所有更改并使用更新的表重新部署。在进行开发时,这是非常理想的。$table_$column之类的新更改,并使用ALTER TABLE语句添加新列。如果您已经发布了数据库,则可以采用这一方法,但如果您愿意,也可以在发布之前完成。https://stackoverflow.com/questions/35086596
复制相似问题