问题
在执行数据插入时,postgresql 提示more than one owned sequence found错误。这个和之前文章中写的序列编号错乱不同,是由数据表的一个列生成了多个序列导致的。(常见于两个数据库的拷贝、同步等操作)。
如果查看序列,会发现序列中有很多重复的项目,可以执行语句:
SELECT 'DROP SEQUENCE "'||c.relname||'";' FROM pg_class c WHERE c.relkind ='S'
ORDER BY c.relname
生成删除每一个序列的语句。接下来需要然后复制出来执行,记得选择遇到错误继续,这样就可以删除所有多余的序列。然后按照我之前文章写的批量更新序列就可以了。如果是强迫症的话,可以使用:文章来源:https://www.toymoban.com/news/detail-545456.html
UPDATE pg_class SET relname = substr(relname,0,char_length(relname)) WHERE relname like '%seq_'
将名字后面多余的 1、2 之类的数字去掉。文章来源地址https://www.toymoban.com/news/detail-545456.html
参考
- 解决postgresql序列重复的问题_more than one owned sequence found_witleo灬的博客-CSDN博客
- Value Generation | Npgsql Documentation
到了这里,关于postgresql序列重复问题处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!