Sql 重命名枚举值会导致“0”;“未找到类型关系”;

Sql 重命名枚举值会导致“0”;“未找到类型关系”;,sql,postgresql,Sql,Postgresql,我正在尝试使用查询更新类型: ALTER TYPE public.enum_subscription_sub_frequency RENAME ATTRIBUTE "BI-WEEKLY" TO "BI_WEEKLY"; 但它给了我错误错误:关系“public.enum\u subscription\u sub\u frequency”不存在,但类型存在 请帮我完成这个 屏幕: 得到答案: ALTER TYPE public.enum_subscription_sub_frequency

我正在尝试使用查询更新类型:

ALTER TYPE public.enum_subscription_sub_frequency RENAME ATTRIBUTE "BI-WEEKLY" TO "BI_WEEKLY";
但它给了我错误
错误:关系“public.enum\u subscription\u sub\u frequency”不存在,但类型存在

请帮我完成这个

屏幕:

得到答案:

ALTER TYPE public.enum_subscription_sub_frequency RENAME VALUE 'BI-MONTHLY' TO 'BI_MONTHLY';

但我还需要更改类型的多个值?

仅支持从Postgres 10开始重命名枚举的值


您必须使用
重命名值
,而不是
重命名属性
来重命名枚举的值

枚举值也是字符串常量,而不是标识符。因此,您需要将它们括在单引号中,而不是双引号中:

ALTER TYPE public.enum_subscription_sub_frequency RENAME VALUE 'BI-WEEKLY' TO 'BI_WEEKLY';

如果您想知道为什么会出现语法错误的“类型…不存在”错误:

当您使用选项
RENAME ATTRIBUTE
时,这表示应该更改“常规”对象类型,因此Postgres会查找“真实”对象类型


但是“枚举类型”不是“对象类型”,因此Postgres抱怨“类型xyz不存在”,而不是语法错误。

需要检查三件事:1)类型是否在
公共模式中?2) 您的sql客户端是否连接到正确的数据库?3) 您的用户是否具有适当的权限?(不太可能是错误,但值得一看)@JimJones请检查编辑问题。不需要为问题添加解决方案。答案被接受的事实标志着问题已经解决。谢谢,这很有效<代码>更改类型public.enum_subscription_sub_frequency将值“双周”重命名为“双周”我还想更改多个值。请建议您一次只能重命名一个值。我可以在那里找到多个值。请在您的查询中进行编辑。这很紧急。一旦您有了答案,请不要扩大您的问题范围。相反(但您已经有了答案:不能使用单个ALTER TYPE语句重命名多个枚举值)