在修改模型后,如何更新已部署的django-app的数据库(postgresql)?

时间:2017-11-24 20:51:48

标签: django git postgresql django-models digital-ocean

我在使用已部署的Django-app时遇到问题。

它工作正常,但我不得不对某个模型的Charfield进行微小修改(增加max_length)。我做了迁移,在本地版本中一切正常。

然后我提交了没有问题的更改,并且所提到的Web版本字段现在接受了更多字符,正如预期的那样,但每当我单击保存按钮时,服务器错误就会上升。

我假设我必须为网络版进行某种迁移/数据库更新,但我似乎没有找到。

(我正在使用Django 1.11,postgresql 9.6和DigitalOcean)。

修改

我刚刚意识到'次要修改'还包括模型中的字段删除。

1 个答案:

答案 0 :(得分:3)

简短回答

你必须运行

python manage.py migrate

也在服务器上。在此之前,请确保您在本地拥有的所有迁移脚本也存在于服务器上。

解释

更改模型后,您可能在本地运行

python manage.py makemigrations

这将创建将相应地转换数据库架构的迁移脚本。希望您已将这些新创建的脚本与更改的模型一起提交给Git。 (如果没有,你现在仍然可以这样做。)

在运行makemigrations之后(在提交之前或之后,这应该没关系),你可能在本地运行

python manage.py migrate

这会将迁移脚本应用于尚未应用于它的数据库。 (已经应用了 的信息存储在数据库本身中。)

您可能(并且希望)没有将您的本地数据库检入Git,因此当您将跟踪的更改推送到远程仓库并将其下拉到您的服务器上时(或者新的Git修订版到达那里),尚未发生对服务器数据库的更改。因此,您必须重复服务器上的最后一个本地步骤(migrate)。

进一步阅读

有关详细信息,请参阅the Django 1.11 documentation w.r.t. migrations。 (您可以将迁移创建或迁移应用程序限制为单个Django应用程序,而不是整个Django项目。)为了掌握这些内容,我可以推荐免费的Django Girls tutorial