Redshift drop有依赖关系的表
发表于:2024-11-13 作者:千家信息网编辑
千家信息网最后更新 2024年11月13日,今天开发需要删除AWS Redshift的一个归档表,但是直接drop发生了如下报错,发现有其他对象依赖这个表,导致无法直接删除,但是报错没有直接显示是什么对象依赖它,可能是有视图,外键等约束anal
千家信息网最后更新 2024年11月13日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安全错误
数据库的锁怎样保障安全
久其系统无法连接到远程服务器
榆树先进网络技术参考价格
远程办公网络安全防护
读取mysql数据库异常
Mysql数据库索引的意思
聊城人民医院服务器
甘肃兰州网络安全大赛
软件开发和项目管理的区别
网络安全业界知名专家
数据库中男女怎么设置列表
电脑服务器切换另一个程序
数据库实验报告思想
如何选择服务器机柜系统
莫斯科服务器到中国
网络安全靠大家手抄报模板
某一数据库的存储过程在哪里找
大学活动网络安全主题班会
服务器性能计算
网络安全审计技术特点
嘉兴数字化智慧工地软件开发
信息网络技术基础知识
诛仙3哪个服务器
东莞戴尔服务器总代理
j2me手机移动软件开发
金融网络安全宣传视频下载
南博望互联网科技有限公司
网络安全对电子商务的影响
创建数据库表的心得体会
软件开发人员需要考哪些证
三大数据库收录的专辑类型