相关疑难解决方法(0)

如何在postgres不同步时重置postgres的主键序列?

我遇到了我的主键序列与我的表行不同步的问题.

也就是说,当我插入一个新行时,我得到一个重复的键错误,因为串行数据类型中隐含的序列返回一个已经存在的数字.

这似乎是由导入/恢复不能正确维护序列引起的.

postgresql primary-key database-sequence

482
推荐指数
17
解决办法
23万
查看次数

Postgres SQLAlchemy自动增量不起作用

我有一个模型类:

class User(PBase):
   __tablename__ = "users"
   id = Column(Integer, primary_key=True)
   name = Column(String, nullable=False, unique=True)
Run Code Online (Sandbox Code Playgroud)

现在根据文档,当类型Integer与primary_key一起使用时,会自动生成一个序列.这是输出表

  id      | integer           | not null default nextval('users_id_seq'::regclass)
Run Code Online (Sandbox Code Playgroud)

如您所见,在修饰符列中生成默认序列.

但是当我尝试添加第二个用户时,我在主键约束上得到完整性错误.

IntegrityError) duplicate key value violates unique constraint   "users_pkey"
DETAIL:  Key (id)=(1) already exists. 
Run Code Online (Sandbox Code Playgroud)

这有什么不对?

编辑:添加用户的代码,快照

  def create(name, email, roleid)

       with self._session_context() as session:
           user = User(name, email, roleid)
           session.add(user)
           session.commit()
Run Code Online (Sandbox Code Playgroud)

python postgresql sqlalchemy

2
推荐指数
2
解决办法
1849
查看次数