Redshift drop有依赖关系的表
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,今天开发需要删除AWS Redshift的一个归档表,但是直接drop发生了如下报错,发现有其他对象依赖这个表,导致无法直接删除,但是报错没有直接显示是什么对象依赖它,可能是有视图,外键等约束anal
千家信息网最后更新 2025年02月03日Redshift drop有依赖关系的表
今天开发需要删除AWS Redshift的一个归档表,但是直接drop发生了如下报错,发现有其他对象依赖这个表,导致无法直接删除,但是报错没有直接显示是什么对象依赖它,可能是有视图,外键等约束
analyticsprod=# DROP TABLE IF EXISTS facts.auto_events_bk_20170223;
ERROR: cannot drop table auto_events_bk_20170223 because other objects depend on it
HINT: Use DROP ... CASCADE to drop the dependent objects too.
通过\d+ auto_events_bk_20170223 查看表结构,发现并没有其他表的外键约束,所以排除;
然后通过\dv+命令在schema:facts下查看视图,但是发现没有任何view存在,但是view可能存在其他schema或db,
那么问题来了,如何在整个数据库中找到与这个表有依赖的的view?
这里AWS Redshift已经给我们提供了一个好的方法,参考链接:https://docs.aws.amazon.com/redshift/latest/dg/r_DROP_TABLE.html
创建一个视图find_depend:
create view find_depend asselect distinct c_p.oid as tbloid,n_p.nspname as schemaname, c_p.relname as name,n_c.nspname as refbyschemaname, c_c.relname as refbyname,c_c.oid as viewoidfrom pg_catalog.pg_class c_pjoin pg_catalog.pg_depend d_pon c_p.relfilenode = d_p.refobjidjoin pg_catalog.pg_depend d_con d_p.objid = d_c.objidjoin pg_catalog.pg_class c_con d_c.refobjid = c_c.relfilenodeleft outer join pg_namespace n_pon c_p.relnamespace = n_p.oidleft outer join pg_namespace n_con c_c.relnamespace = n_c.oidwhere d_c.deptype = 'i'::"char"and c_c.relkind = 'v'::"char";
查询视图找到与表auto_events_bk_20170223相关的view:
analyticsprod=# select * from facts.find_depend where schemaname='facts' and name not in ('find_depend') order by name; tbloid | schemaname | name | refbyschemaname | refbyname | viewoid--------+------------+-------------------------+-----------------+-------------+--------- 879566 | facts | auto_events_bk_20170223 | public | map_routes2 | 965969 879566 | facts | auto_events_bk_20170223 | public | map_routes | 966155 879566 | facts | auto_events_bk_20170223 | public | map_edges | 1019697(3 rows)analyticsprod=# set search_path to public;analyticsprod=# \dv List of relations schema | name | type | owner--------+-----------------------+------+------- public | map_edges | view | fengw public | map_edges_group | view | fengw public | map_route_edges_group | view | fengw public | map_routes | view | fengw public | map_routes2 | view | fengw public | map_routes_group | view | fengw(6 rows)
最后如果判断这些相关的view没有用的话,可以通过命令drop table auto_events_bk_20170223 cascade删除表,包括视图一同删除。
视图
命令
对象
可以通过
数据
数据库
方法
有用
结构
链接
问题
参考
开发
查询
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
长宁区营销软件开发平台资质
linux服务器关闭
服务器heshe
安卓应用软件开发区拍照
计算机网络技术网络课程
悦禾网络技术有限公司
云服务器不会做自动快照
手机百度网盘显示服务器异常
我的世界空岛生存服务器端下载
国家林业局一张图数据库
20网络安全工作报告
梦辰神奇宝贝服务器注册
刺激战场上无法连到服务器
图书馆软件开发工资一般多少
进口分布式实时数据库哪家好
南京在哪培训网络安全员
网络安全法安全责任
郑州企业管理软件开发
苏州软件开发学什么条件
嵌入式软件开发的标准
英灵神殿专用服务器配置要求
国外哲学期刊数据库
山东大学网络安全好考吗
山东服务器机柜哪家可靠
软件开发9怎样工资才高
ie浏览器不让连接数据库
长沙服务器机柜多少钱
微博是用什么软件开发
网络安全与软件安全
评价对软件开发的影响