RDS PostgreSQL执行CREATE CAST语句时, 提示"must be owner of xxx"

本文介绍在执行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;

解决办法

重要

使用此方法前需要确保实例版本满足以下条件:

  • 实例大版本为RDS PostgreSQL 10及以上版本。

  • 实例内核小版本为20210531及以上。查看和升级内核小版本,请参见升级内核小版本

以上述示例SQL为例,需要通过以下步骤解决:

  1. 使用高权限账号连接数据库。如何获取高权限账号,请参见创建账号

  2. 修改转换前数据类型Owner为当前登录账号。

    ALTER type bool owner TO <your role>;
  3. 再次执行CREATE CAST语句,即可成功转换数据类型。

    CREATE CAST(boolean AS smallint) WITH INOUT AS implicit;