gpt4 book ai didi

postgresql - 使用 Sqitch Rework 命令更改表

转载 作者:行者123 更新时间:2023-11-29 11:31:38 24 4
gpt4 key购买 nike

我曾多次尝试关注 Sqitch's ' postgres tutorial ',只是我没有更改函数(使用 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 部署查询之后

在标记数据库之前

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;

最佳答案

返工是为了制作 idempotent更改,例如 CREATE OR REPLACE FUNCTIONCREATE TABLE 语句不是幂等的。如果您想向表中添加一列,我建议:

  1. 如果您还没有发布您的数据库,只需修改原始更改中的CREATE TABLE 语句和sqitch rebase 以还原所有更改并使用更新后的重新部署 table 。这是进行开发时的理想选择。

  2. 否则,添加一个新的更改,命名为 $table_$column 或类似名称,并使用 ALTER TABLE添加新列的语句。如果您已经发布了数据库,则可以采用这种方法,但如果您愿意,也可以在发布之前执行此操作。

关于postgresql - 使用 Sqitch Rework 命令更改表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35086596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com