postgresql - 在 Postgres 上删除枚举值是否有限制
问题描述
我正在尝试从 Postgres 中的枚举中删除一个值,但它一直失败。我之前已经做过很多次了,没有任何问题,所以我不确定是否发生了变化,或者我是否遇到了一些极端情况限制。
这是我正在运行的(删除 enum FOURTH
):
ALTER TYPE "my_enum" RENAME TO "my_enum_old";
CREATE TYPE "my_enum" AS ENUM('FIRST', 'SECOND', 'THIRD', 'FIFTH');
ALTER TABLE "my_Table" ALTER COLUMN "my_column" TYPE "my_eum" USING "my_column"::"text"::"my_enum";
DROP TYPE "my_enum_old";
也许枚举名称的长度有大小限制?我们的完整枚举名称是以下长度(Xs 用于隐藏真实姓名)XXXXXXXXXXXXX_XXXXXXX_XXXXXXXX_XXXXXXXXX_XXXXXXXX_XXXXX_XXXX
并且添加old
到末尾时会添加另一个_OLD
.
返回的错误是
ERROR: operator does not exist: my_enum = my_enum_old
HINT: No operator matches the given name and argument types. You might need to add explicit type casts.
解决方案
最可能的问题是您对表有一个检查约束,它执行以下操作:
check (not(my_column = 'FOURTH'::my_enum_old)));
一旦 my_column 更改类型,就无法再检查该约束。只需放弃约束。
推荐阅读
- amazon-web-services - Zabbix 与 CloudWatch 的集成-Zabbix 服务器 LLD 上没有数据
- reactjs - 生产中的 ReactJS API 主机
- image-processing - 校正曝光和白平衡
- php - 基于N查找最重复列表的算法
- mysql - (Mysql) 如何创建一列是将两列相乘
- python - 500 内部服务器错误烧瓶
- python - 在 Keras 模型中实现 GloVe 嵌入层
- ruby-on-rails - 在对某些参数添加限制后,Rails Pundit 无法仅在 Create action 上找到 nil 策略
- python - 熊猫数据帧传播功能还是类似的?
- python - 只需在python中写入一次对象名称即可调用对象的所有属性