gpt4 book ai didi

Flask-Migrate `db upgrade` 失败, "relation does not exist"

转载 作者:行者123 更新时间:2023-12-03 15:53:18 34 4
gpt4 key购买 nike

我正在开发环境中使用具有约 80 个表的 Postgres 10 数据库的 flask 应用程序。有很多关系和 ForeignKeyConstraints 将它们连接在一起。

它与 Flask-Migrate 一起工作得很好。我已经引导并迁移到了大约 80 个表。但是,我想测试一些新脚本来为数据库表设置种子,并认为删除数据库并使用 Flask-Migrate 再次将其恢复是最快的。

在这个过程中,migration 文件夹被删除了,所以我刚刚用 db init 重新开始。 .然后跑 db migrate .我在迁移脚本中手动修复了一些导入。最后,我跑了db upgrade .

但是,现在有了所有这些 80 create_table当我运行 db_upgrade 时,迁移脚本中的命令,我收到一个错误:

sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) relation "items" does not exist

如果子表的顺序不在迁移文件中的父表之下,我会收到每个具有 ForeignKeyConstraint 的子表的错误。

但是,来自 db migrate 的自动生成脚本表按字母顺序排序,按表名排序。

引用文档,我没有看到提到排序顺序的重要性。

最重要的是,我似乎要么被迫编写一个脚本来按父表位于子表上方的顺序对所有这些表进行排序。否则,只需像拼图游戏一样剪切和粘贴,直到所有表格都按所需顺序排列。

我错过了什么?使用 Flask-Migrate 或 Alembic 是否有更简单的方法来做到这一点?

最佳答案

对此进行研究后,似乎flask-migrate 和/或Alembic 没有任何内置方法来解决此排序顺序问题。我通过按顺序剪切和粘贴表来修复它,以确保父表位于迁移文件中的子表之上。

关于Flask-Migrate `db upgrade` 失败, "relation does not exist",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51256373/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com