当将应用程序部署到一个新服务器(即数据库是空的)时,我如何正确地将数据库与瓶迁移同步?
当我已经有了一些模式时,我已经添加了Flask迁移到项目中,所以我没有对所有create_table()进行“初始”迁移。现在,当我在我的部署脚本中执行manage.py db upgrade时,我得到了relation "..." does not exist。
是否有任何内置方式来检测空数据库并运行'create_all()‘而不是迁移?这就是Alembic的烹饪手册建议。由于我已经在使用Flask,所以我正在寻找一些处理迁移的统一方法。
发布于 2016-03-18 15:40:38
理想的解决方案是为您的db模式生成初始迁移,就像您开始跟踪使用Flask和Alembic迁移的那一天一样。
如果你记得当时做这件事的话,做这件事很简单。只需创建一个单独的空数据库(不要使用真正的db ),将应用程序配置为使用空数据库,然后生成迁移。这个迁移将包含整个模式。一旦生成了迁移,就摆脱空数据库,将配置恢复到真正的db。
如果您已经有了额外的迁移,那么它会变得更复杂一些。您必须返回您想要生成初始迁移的代码版本,然后按照上面的步骤生成它。最后,您需要在迁移列表中插入初始迁移,作为第一个迁移。查看几个迁移脚本,找出每个迁移如何引用上一个迁移脚本。几个小编辑就能让你振作起来,跑起来。
如果这看起来太费劲了,那么另一种选择是使用db.create_all()生成数据库,直到最近的迁移,然后使用./manage.py db stamp head告诉Alembic它应该考虑更新数据库。
https://stackoverflow.com/questions/36069353
复制相似问题