【问题标题】:Django syncdb on first deployment首次部署时的 Django syncdb
【发布时间】:2015-04-30 22:26:31
【问题描述】:

所以我已经成功地用 django 1.8 创建了一个站点,我已经准备好部署了。我有几个新模型,我正在使用 django-allauth,它有自己的模型。我还设法使用配置文件更改设置,以使用不同的数据库进行生产和开发,以及在生产时关闭调试等。

我已将我的项目文件夹上传到生产服务器,并准备在 http.conf 中为 Apache 添加新行,但我无法完全了解数据库。 我是否在生产服务器上运行 syncdb 或 makemigrations? django 如何知道使用生产数据库而不是开发数据库。我的设置从套接字中查找主机名来决定它是生产还是开发。

接下来我该怎么做?

【问题讨论】:

    标签: python django deployment django-models


    【解决方案1】:

    来自docs

    您应该将迁移视为您的版本控制系统 数据库架构。 makemigrations负责打包你的 模型更改为单独的迁移文件 - 类似于提交 - migrate 负责将这些应用到您的数据库中。

    每个应用程序的迁移文件都位于“迁移”目录中 在该应用程序内部,旨在致力于,并且 作为其代码库的一部分分发。你应该做一次 在您的开发机器上运行相同的迁移 你同事的机器,你的登台机器,最后是你的 生产机器。

    因此,您在您的开发机器上进行迁移,然后在任何其他机器上运行它们。

    【讨论】:

    • 对,我忘记了迁移文件。那我是不是直接进入设置文件所在的目录,部署后在生产服务器上运行“django-admin migrate”?
    • 是的,或者如果你在 linux 中使用 ./manage.py migrate 或在 Windows 上使用 manage.py migrate 更好。
    • 我想通了。我在生产服务器上运行了 python manage.py migrate 并创建/更改了表。谢谢!
    【解决方案2】:

    syncdb 自 django 1.7 起已更改为 migrate

    迁移 Django 1.7 中的新功能。

    迁移是 Django 将您对模型所做的更改(添加字段、删除模型等)传播到数据库架构中的方式。它们被设计为大部分是自动的,但您需要知道何时进行迁移、何时运行它们以及您可能遇到的常见问题。

    在 1.7 版本之前,Django 仅支持向数据库添加新模型;无法通过 syncdb 命令(migrate 的前身)更改或删除现有模型。

    doru 很好地说明了 migratema​​kemigrations 之间的区别。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      • 2012-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多