表topics
的类如下。主键是自动生成的串行密钥。在测试时,我从表中删除了行,并试图重新插入它们。UUID未被重置。
class Topics(db.Model):
""" User Model for different topics """
__tablename__ = 'topics'
uuid = db.Column(db.Integer, primary_key=True)
topics_name = db.Column(db.String(256),index=True)
def __repr__(self):
return '<Post %r>' % self.topics_name
我尝试了以下命令来重置密钥
ALTER SEQUENCE topics_uuid_seq RESTART WITH 1;
它不起作用
如果有任何形式的建议,我将不胜感激!
如果它确实是serial
ID,则可以使用重置所拥有的SEQUENCE
SELECT setval(pg_get_serial_sequence('topics', 'uuid'), max(uuid)) FROM topics;
参见:
如何重置postgres';主密钥序列何时不同步?
但是,为什么名称会是uuid
?UUID不是integer
号,也不是serial
号。此外,当你写时,还不完全清楚出了什么问题
UUID没有被重置。
关于ALTER SEQUENCE ... RESTART
:
- Postgres手动更改序列
为了避免重置序列时可能出现的重复id错误,请尝试:
UPDATE table SET id = DEFAULT;
ALTER SEQUENCE seq RESTART;
UPDATE table SET id = DEFAULT;
对于添加的上下文:
'table'=您的表名
'id'=您的id列名
'seq'=使用查找序列名称
SELECT pg_get_serial_sequence('table', 'id');