【问题标题】:Django AWS Deploy: After deployment new Database Table was not createdDjango AWS Deploy:部署后未创建新的数据库表
【发布时间】:2018-02-24 17:39:01
【问题描述】:

我最近对在 PostgreSQL 数据库上创建数据库表的 models.py 文件进行了一些更改。

在本地开发系统上一切正常。我将更改推送到 GitHub,然后部署到我的测试 AWS EC2 Linux 系统。部署没有错误,所有文件都反映了我在开发系统上的内容。

唯一的问题是部署后没有创建数据库表。如果我在测试 AWS EC2 上运行 makemigrations,它只会声明没有任何更改。创建反映我的models.py 的新数据库表的最佳方法是什么?

作为参考,这是我的部署脚本:

#!/bin/bash
source venv/bin/activate
git pull
pip install -r requirements.txt
./manage.py migrate
./manage.py collectstatic --no-input
initctl restart gunicorn

【问题讨论】:

  • 我遇到了这个问题。必须将表的权限授予我们正在使用的 db 用户。但是迁移的表现就像它正在工作一样。
  • @Chris 是的,它们出现在测试环境中。它们按顺序排列并包含更改。
  • @KevinHirst 我正在运行 linux AWS EC2,数据库在 RDS 上。首先,这已经奏效了,但我将如何尝试您的建议?
  • 必须以某种方式通过 SQL 授予访问权限。就像“GRANT ALL ON public.table_name to {user}”——在一种情况下,我们必须使用 psql 工具在 django_migrations 表上执行此操作。

标签: git python-3.x amazon-ec2 django-migrations


【解决方案1】:

问题是由于旧的迁移文件未正确应用而发生的。运行python manage.py showmigrations 是一个命令,它显示哪些迁移文件已应用,哪些未应用。对我来说,有 8 个迁移文件不适用。为了解决这个问题,我从数据库中的 django-migrations 表中删除了最后一次已知的迁移。然后我重新运行python manage.py migrate,这会将所有迁移应用到当前迁移,然后创建数据库条目。然后,我从我的 GitHub 存储库进行部署,以确保应用损坏的迁移文件后的所有更改。这解决了我的问题,希望能帮助下一个遇到此类迁移问题的人。

【讨论】:

    猜你喜欢
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    • 2016-02-26
    相关资源
    最近更新 更多