gpt4 book ai didi

postgresql - 错误 : ALTER TYPE . .. ADD 无法在事务 block 内运行

转载 作者:行者123 更新时间:2023-11-29 11:22:46 27 4
gpt4 key购买 nike

我正在尝试向我在 PostgreSQL 中的现有类型添加新的类型值。但是我得到以下错误

error: ALTER TYPE ... ADD cannot run inside a transaction block

我用来向类型添加新值的查询是

ALTER TYPE public.request_type ADD VALUE "Check";

我实际上在使用 node-pg-migrate 创建的迁移文件中运行上面的查询

这里 public 是我的架构。

知道为什么会失败吗?

编辑:

下面的查询在 pgadmin 中执行时执行良好

ALTER TYPE public.request_type ADD VALUE "Check";

但是当我通过 node-pg-migrate 迁移运行上面的命令时,它失败并抛出上面的错误

最佳答案

正如上面提到的,您不能在事务 block 中编辑枚举。但是您可以创建新的。以下是步骤:

  1. 将所有使用此类型的列/表的类型从 request_type 更改为 varchar:
ALTER TABLE table_name
ALTER COLUMN column_name TYPE VARCHAR(255);
  1. 删除并重新创建request_type枚举:
DROP TYPE IF EXISTS request_type;
CREATE TYPE request_type AS ENUM (
'OLD_VALUE_1',
'OLD_VALUE_2',
'NEW_VALUE_1',
'NEW_VALUE_2'
);
  1. 将所有列/表的类型从 varchar 恢复为 request_type(恢复第一步):
ALTER TABLE table_name
ALTER COLUMN column_name TYPE request_type
USING (column_name::request_type);

关于postgresql - 错误 : ALTER TYPE . .. ADD 无法在事务 block 内运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53149484/

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