暂无图片
请指教,PG12遇到报错 ERROR: could not find tuple for attrdef 37(Drop sequence seq1报错)
我来答
分享
jack325
2024-01-05
请指教,PG12遇到报错 ERROR: could not find tuple for attrdef 37(Drop sequence seq1报错)

PG12遇到报错 ERROR: could not find tuple for attrdef 37(Drop sequence  seq1报错)

我来答
添加附件
收藏
分享
问题补充
5条回答
默认
最新
jack325

我查了一些资料,

 delete from pg_class where oid=1233 --sequence 的oid;   

delete from pg_depend  where objid=1233  ;

这种清理的方案安全吗? 有谁有涉及这种原理的文章,请帮忙解答一下;

暂无图片 评论
暂无图片 有用 4
打赏 0
yBmZlQzJ

删除 pg_class 或 pg_depend 中直接与序列对象关联的记录是一种非常危险的操作,因为它违反了 PostgreSQL 对系统表的一致性维护原则。在正常情况下,数据库管理系统(如 PostgreSQL)提供了专门的 SQL 语句来管理数据库对象,例如创建、修改和删除序列应当使用 CREATE SEQUENCEALTER SEQUENCE 和 DROP SEQUENCE

直接删除 pg_class 或 pg_depend 系统表中的记录可能会导致以下问题:

  1. 数据不一致:删除这些系统表中的记录没有通过正常的事务处理或内部一致性检查,可能导致其他依赖于该序列的对象无法正确工作,比如触发器、约束或者其他引用该序列的表。

  2. 恢复问题:PostgreSQL 的垃圾回收机制不会清理那些未通过正规途径删除的对象,这可能导致空间泄露或者后续清理操作出现问题。

  3. 安全性:由于系统表是数据库的核心组成部分,直接修改它们可能引发未知的副作用,甚至可能破坏整个数据库的完整性。

  4. 权限问题:通常用户不应拥有对系统表进行直接修改的权限,即使是超级用户也应当尽量避免非标准操作,除非在极特殊且清楚后果的情况下。

暂无图片 评论
暂无图片 有用 1
打赏 0
jack325
题主
2024-01-06
我也不想操作啊,关键如题,遇到这样的问题,有什么建议呢 ??
zzzdwd

你需要先确认你想要删除的序列是否正被某个表使用。如果确实存在这样的使用,你需要先更新表的结构,将默认的序列值更改为NULL或者其他不依赖现有序列的值,然后再尝试删除序列。这可以通过ALTER TABLE语句配合ALTER COLUMN子句来实现。

暂无图片 评论
暂无图片 有用 0
打赏 0
舒悦

先备份后操作,每个操作都存在风险只有小心谨慎。

暂无图片 评论
暂无图片 有用 0
打赏 0
subverter

建议先在测试环境测试一下上述操作,在生产环境先备份后操作。

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
惰性冻结对应的啥命令?
回答 1
已采纳
惰性冻结:仅清理死元组,可冻结部分事务ID。VACUUMtabname; 
入门者求解|postgresql里的存储过程(是procedure不是function)如何返回一个数据集? 我如下这样写的话会报错.
回答 2
返回结果集的是函数,不反回结果集的是存储过程
postgresql 的 order by 是非稳定排序吗?
回答 2
已采纳
是否稳定,依赖于你orderby 的字段或表达式如果是字段 那么是稳定的如果是表达式。那么你orderby 表达式中如果有不确定函数,那么就是不稳定的,否则就是稳定的。
postgresql:如何将查询的两个字段合并成一个字段 并将两个字段的值组合成一个数组?
回答 2
参考案例:(postgres@[local])[sbtest]17:18:32createtablet1(c1int,c2int);CREATETABLETime:5.341ms(postgres@[
pg中线上正式环境,maintenance work mem 设置多大合适?
回答 4
mark
postgresql 有没有负载均衡的解决方案?
回答 1
已采纳
可以使用pgpoolhttps://www.pgpool.net/
No package 'libevent' found
回答 2
Theerrormessage"Nopackage'libevent'found"typicallyoccurswhenyou'retryingtocompileorinstallsoftwareth
PostgreSQL的base backup物理备份支持单独一个表空间备份吗?
回答 1
已采纳
pgbasebackup制作数据库集群文件的精确副本,同时确保服务器自动进入和退出备份模式。总是对整个数据库集群进行备份;无法备份单个数据库或数据库对象。对于选择性备份,必须使用另一个工具,例如pgd
PostgreSQL分区表是不是必须手动创建分区?
回答 3
可以使用触发器,或者是定时任务来进行创建。
比如说现在 greenplum 的系统日志是一些外部表的日志文件,但是编码有问题,在数据库里面 select 报编码错误,需要让 GP 写日志文件的编码统一为 UTF-8,是否有这种配置呢
回答 2
你可能没有明白我的意思,我的日志文件来自于我客户,怎么从源头(客户)设置他们insert数据的时候就是utf8呢,再解释一下,我一同事对对gp仓库通过navicate进行建表插入数据,这些数据会被gp
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~