无法通过TablePlus删除Redshift函数,求排查解决办法
解决Redshift中TablePlus无法删除函数的问题
针对管理员账号无法通过TablePlus删除Redshift函数(含新建存储过程)的问题,可按以下步骤排查解决:
确认函数签名的完整性
Redshift的DROP FUNCTION要求精确匹配函数的参数类型,同名但参数不同的函数会被视为独立对象。你当前使用的DROP FUNCTION "SCHEMA".sp_migrate_test();可能未包含完整参数信息。
先执行查询获取函数的完整签名:SELECT nspname, proname, pg_get_functiondef(p.oid) AS full_definition FROM pg_proc p JOIN pg_namespace ns ON p.pronamespace = ns.oid WHERE proname = 'sp_migrate_test' AND nspname = 'SCHEMA';根据返回的
full_definition生成正确的删除语句,例如若函数定义为sp_migrate_test(varchar),则删除语句应为:DROP FUNCTION "SCHEMA".sp_migrate_test(varchar);检查事务提交状态
TablePlus默认可能开启自动事务模式,执行DROP后若未手动提交,退出客户端时事务会回滚,导致函数“恢复”。执行删除语句后,手动添加并执行:COMMIT;再退出重新查看。
刷新TablePlus元数据缓存
UI显示的可能是缓存的旧数据,即使函数已被删除也未更新。右键点击目标Schema,选择「刷新」(或使用快捷键Ctrl+R/Cmd+R),再检查函数是否存在。绕过TablePlus直接操作Redshift
排除客户端本身的问题,使用Redshift官方客户端或psql连接集群,执行正确的DROP FUNCTION语句,操作完成后再回到TablePlus验证结果。验证权限有效性
虽然是管理员账号,仍可确认是否拥有该函数的删除权限:SELECT has_function_privilege('你的管理员账号名', '"SCHEMA".sp_migrate_test()', 'drop');若返回
f,需重新配置权限或使用拥有完整权限的账号操作。
内容的提问来源于stack exchange,提问作者Nairda123
相关产品推荐
相关产品推荐

