我正在尝试向PostgreSQL中的现有类型添加新的类型值。但是我得到了以下错误
错误:更改类型。。。添加不能在事务块内运行
我用来向类型添加新值的查询是
更改类型public.request\u类型添加值“Check”;
实际上,我正在迁移文件中运行上述查询,该文件是使用节点pg migrate创建的
这里public是我的模式
知道为什么会失败吗
编辑:
在pgadmin中执行时,下面的查询执行良好
更改类型public.request\u类型添加值“Check”;
但当我通过节点pg migrate migrations运行上述命令时,它失败并抛出上述错误
如上所述,您不能在事务块内编辑枚举。但是你可以创建一个新的。以下是步骤:
- 将使用此类型的所有列/表的类型从request_type更改为varchar:
更改表格名称
更改列名称类型VARCHAR(255);
- 再次删除并创建请求类型枚举:
删除类型(如果存在请求类型);
创建类型请求\u类型作为枚举(
“旧值1”,
“旧值2”,
“新值1”,
“新的_值_2”
);
- 将所有列/表的类型从varchar还原为request\u type(还原步骤一):
更改表格名称
更改列名称类型请求类型
使用(列名称::请求类型);