我有一个样本表
class a(Base):
__tablename__ = 'a'
id = Column(Integer,primary_key=True)
username = Column(VARCHAR(255))
现在我对其他表进行了一些更改,并在上面的表格中为“username”列添加了唯一约束。
class a(Base):
__tablename__ = 'a'
id = Column(Integer,primary_key=True)
username = Column(VARCHAR(255),unique=True) # unique key added.
我运行python run.py db migrate
命令,它会检测所有更改。没有任何问题。
现在我运行python run.py db upgrade
。这使得数据库中的所有模式更改都会在上述表的唯一约束下失败,因为该表已经具有重复数据。现在我需要恢复所有数据库更改以回到我以前的版本(我无法想象如何做到这一点)。无论如何,在将架构更改提交到数据库之前,是否测试所有升级是否正常运行?如果没有,请帮助我如何恢复所有数据库更改。
答案 0 :(得分:0)
Alembic将迁移中的更改视为原子更改。如果迁移中的最后一件事失败了,那么整个迁移将被丢弃,因此您总是会留下一致的数据库。