【问题标题】:Techniques to Avoid Problems with Django Migrations?避免 Django 迁移问题的技术?
【发布时间】:2017-12-31 15:01:09
【问题描述】:

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

在开发过程中,我发现当我更改数据库架构并重新运行迁移时,它们只有大约 50% 的时间成功运行。显然我做错了一些事情。更糟糕的是,当迁移不起作用时,要准确理解它们失败的原因以及如何修改我的迁移文件以便它们能够运行并不总是那么容易。在这些情况下,我总是必须删除数据库并重新开始。这在开发中是可以接受的,但在我投入生产时这不是一个好的策略。

当您修改模型类/数据库架构以增加 Django 迁移运行的可能性时,您遵循哪些“最佳实践”或“注意事项”?如果迁移无法运行并且您必须从头开始重建数据库,您是否采取了任何步骤来确保可以恢复数据库?我应该补充一点,我是一家单人创业公司,因此我不会遇到使用相同代码库的团队会遇到的冲突问题。

【问题讨论】:

  • 您应该发布一些示例,说明您在迁移时会遇到哪些错误。
  • 这是个好主意,我会的,但不幸的是我在重建数据库之前没有记录它们。
  • 它太宽泛了,你可以做假迁移,你可以自己编辑迁移文件来解决错误。然后,您可以使用可为空的字段来避免默认值错误。然后另一种选择是备份 dB 然后迁移然后重新加载 dB。 @William 还有一个想法是我不同意下面的答案,我认为这是一个可怕的想法
  • 您目前的工作流程是什么?
  • 我正在根据我最近遇到的问题整理一个新的工作流程。收到更多反馈后,我会在另一天左右与大家分享。

标签: django postgresql django-migrations


【解决方案1】:

这些技术是我正在使用的

  1. 在与我在服务器上工作的环境相同的环境中本地工作。相同版本的 Django 和数据库服务器然后推送迁移本身,不要忽略它,并使用迁移在服务器上迁移。
  2. 这个我用过一次,我手动迁移,我用 sql 命令手动创建了表、索引、关系,它也能正常工作。

我更喜欢第一个

【讨论】:

  • 第一个会使生产服务器的迁移和 dB 状态混乱。反正第一个没看懂。如果您从本地迁移在服务器上创建一个,会有什么不同
  • 当你使用 git 之类的任何 VC 时,不要忽略你的迁移文件,将其全部推送并使用它们在服务器上迁移,因为一些开发人员忽略它们并再次在服务器上进行迁移,这根据我的观点,效率不高,因为它有很大不同并减少了迁移的错误
  • 好的,所以如果您从本地创建迁移并在服务器上使用它们,而第二种情况是您在服务器上创建迁移,那么两者都不相同。如果你有一个团队在同一个项目上工作,这个解决方案也会很糟糕。
  • 是的,我知道是因为冲突,我使用一些约定来处理它,以便在之前拉主并解决冲突。我阅读了很多关于迁移和避免或减少错误的最佳技术的内容。我终于用我的方式了
  • 好吧,任何事情都可以工作,但这不是最佳实践
猜你喜欢
  • 1970-01-01
  • 2021-11-20
  • 2011-10-26
  • 1970-01-01
  • 1970-01-01
  • 2016-06-12
  • 2016-07-29
  • 2015-08-26
相关资源
最近更新 更多