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语句重命名多个枚举值)