2017-07-25 135 views
2

我正在用Django 1.8和PostgreSQL 9.4建立一个电子商务网站。我有兴趣了解在更改数据库时可以使用哪些技术,以避免Django迁移出现问题,特别是在无法迁移运行的情况下,我必须删除迁移,重建数据库以及从备份中恢复。避免Django迁移问题的技巧?

在发展中,我发现,当我改变我的数据库架构和重新运行迁移,他们只运行的时间成功地约50%。很明显,我做错了一些事情。更糟糕的是,当迁移不起作用时,并不总是很容易明白为什么他们失败了,以及如何修改我的迁移文件以便它们能够运行。在这些情况下,我总是必须删除数据库并重新开始。这在开发中是可以接受的,但是当我投入生产时这不是一个好策略。

什么是一些“最佳做法”或“该做什么和不该做什么”你当你修改模型类/数据库模式,以增加你的Django迁移将运行的概率遵循?是否有任何步骤可以确保您可以在您的迁移无法运行并且必须从头重建数据库的情况下恢复数据库?我应该补充一点,我是一个人的创业公司,所以我没有使用相同代码库开展工作的团队会遇到的冲突问题。

+1

你应该张贴一些什么错误,你有移民得到的例子。 –

+0

这是一个好主意,我会,但不幸的是,我没有记录他们,我重建我的数据库之前。 – William

+0

它太宽泛了,就像你可以做假迁移一样,你可以自己编辑迁移文件来解决错误。然后你可以有空的字段来避免默认值错误。然后另一个选择是备份dB然后迁移然后重新加载dB。 @William还有一个想法是,我不同意下面的答案,我认为这是一个可怕的想法 –

回答

0

这些技术是什么,我用我在它正在工作的服务器相同的环境中本地

  1. 工作。 Django和数据库服务器的相同版本然后推送迁移本身,不要忽略它,并使用迁移在服务器上进行迁移。
  2. 这一次我用了一次,我手动迁移,我使用SQL命令手动创建的表,索引,关系,妥善过它的工作。

我喜欢第一个更

+0

第一个会混乱您的生产服务器的迁移和dB状态。任何我不明白的第一个。如何,如果你从本地迁移 –

+0

在服务器上创建一个当您使用任何VC喜欢的git这将是不同的,不要忽略你的迁移文件,将其完全推,并利用它们的服务器上迁移也一样,一些开发商忽略它们根据我的观点再次是效率不高,使服务器上迁移,因为它不同了很多,降低了迁移错误 –

+0

好吧,如果你创建本地迁移和使用它们的服务器和第二种情况,所以你创建的服务器迁移,然后不会都是一样的。如果你有一个团队在同一个项目上工作,这个解决方案也会很糟糕。 –