【问题标题】:How to sync the PostgreSQL database script changes with Django back-end如何将 PostgreSQL 数据库脚本更改与 Django 后端同步
【发布时间】:2017-01-12 15:05:41
【问题描述】:

我得到了一个在 Django 后端运行网站的新项目。这使用 PostgreSQL 数据库。 我在本地系统上完成的更改。 我的客户给了我一台具有适当 FTP、SSH 和数据库访问权限的实时远程计算机。他还创建了一个数据库转储文件并将其提供给我。 我已经完成了必要的代码和数据库更改。 但是现在我不知道如何将这些数据库更改同步回服务器。 我对 Django 和 PostgreSQL 的东西还很陌生,不知道如何完成这项任务。 您的帮助将不胜感激。 谢谢

【问题讨论】:

    标签: django database postgresql backend


    【解决方案1】:

    您不应该直接对数据库进行更改。这就是migrations 的用途。

    【讨论】:

    • 为什么这么复杂?难道没有简单的方法来完成这个吗?例如只需用新的数据库模式替换旧的数据库模式。服务器托管在 DigitalOcean 网站上。
    • 你到底是什么意思,复杂?迁移是为了使其简单。这是简单的方法。而且你不能只是“替换”一个数据库模式,所有数据会发生什么?
    • 那么如果我在管理面板中引入了一个新部分并创建了一个新模型,那么根据您的示例迁移命令会是什么样子?你能分享任何示例命令吗?这对我开始很有帮助。谢谢
    • @YuDroid Django 教程有你想要的一切。
    • @YuDroid 这是一个过程,您应该按照迁移关注的过程进行操作。 :D
    【解决方案2】:

    正如 Daniel Roseman 所说,Django 迁移将更容易做到这一点,而不是“只需用新的数据库模式替换旧的数据库模式”。 因为人很容易出错,很容易忘记你编辑或删除了哪个字段。有时当你在数据库中创建的字段与在django模型中创建的字段有点不同时会导致问题。

    例如

    • 在数据库中,您设置了一个类似这样的 create_time 字段 datetime(6) NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP
    • 在 Django 模型中,您在 django 模型中设置 create_time = models.DateTimeField()

    您的项目将工作,但您不会注意到更新记录时会出现问题,但 create_time 也会更新。很难找到bug和维护项目。另外,如果你使用docker来部署你的项目,在docker文件中你可以直接使用

    python manage.py makemigrations
    python manage.py migrate
    

    确保每个数据库都具有相同的数据库架构。您不必逐个替换数据库。

    【讨论】:

    • 我运行的命令与您上面显示的完全相同。此外,它还显示了我在控制台窗口中添加的新模块。但是当我打开管理网站时,我看不到新添加的模块。我在这里错过了什么吗?我可以为您提供我执行的命令的日志跟踪。
    • 我运行的命令是:1.python manage.py makemigrations splash。输出:Migrations for 'splash': 0001_initial.py: - Create model Splash
    • 2. python manage.py migrate splash。输出:Operations to perform: Apply all migrations: splash Running migrations: No migrations to apply.
    【解决方案3】:

    这对我有帮助: 我在设置中更改了数据库名称,并在 PGADMIN(运行 PostgreSQL 的接口)创建了一个新名称

    然后我做了两个迁移:makemigrations 和 migrate

    【讨论】:

      猜你喜欢
      • 2012-02-12
      • 1970-01-01
      • 1970-01-01
      • 2013-10-27
      • 2020-03-13
      • 1970-01-01
      • 2021-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多