本文介绍在执行CREATE CAST语句转换数据类型时,如何处理报错must be owner of type xx or type xxx

问题现象

执行CREATE CAST语句转换数据类型时,提示ERROR: must be owner of type xxx or type xxx

例如执行以下命令:
CREATE cast(boolean AS smallint) WITH INOUT AS implicit;

解决办法

注意 使用此方法前需要确保实例版本满足以下条件:
  • 实例大版本为PostgreSQL 10、11、12、13或14。
  • 实例内核小版本为20210531及以上。查看和升级内核小版本,请参见升级内核小版本
以上述示例SQL为例,需要通过以下步骤解决:
  1. 使用高权限账号连接数据库。如何获取高权限账号,请参见创建账号
  2. 修改转换前数据类型Owner为当前登录账号。
    ALTER type bool owner TO <your role>;
  3. 再次执行CREATE CAST语句,即可成功转换数据类型。
    CREATE cast(boolean AS smallint) WITH INOUT AS implicit;